【发布时间】:2010-09-21 08:29:03
【问题描述】:
我正在使用 python\pyodbc 并希望访问存储过程的第二个结果集。据我所知,pyodbc 不支持多个结果集。此外,我无法修改存储过程。是否有任何选项可以使用 SQL 或其他解决方法访问第二个结果集?也许创建第二个存储过程,只返回第一个结果集的第二个结果集?
【问题讨论】:
我正在使用 python\pyodbc 并希望访问存储过程的第二个结果集。据我所知,pyodbc 不支持多个结果集。此外,我无法修改存储过程。是否有任何选项可以使用 SQL 或其他解决方法访问第二个结果集?也许创建第二个存储过程,只返回第一个结果集的第二个结果集?
【问题讨论】:
有几种可能的方法here。如果结果集都相同,您也许可以使用 INSERT...EXEC 方法。否则 OPENQUERY 可能会起作用。
【讨论】:
不需要任何花哨的东西。只需使用cursor's nextset() method:
import pyodbc
db = pyodbc.connect ("")
q = db.cursor ()
q.execute ("""
SELECT TOP 5 * FROM INFORMATION_SCHEMA.TABLES
SELECT TOP 10 * FROM INFORMATION_SCHEMA.COLUMNS
""")
tables = q.fetchall ()
q.nextset ()
columns = q.fetchall ()
assert len (tables) == 5
assert len (columns) == 10
【讨论】: