如何用SQL或其他方法访问存储过程的第二个结果集?Python\pyodbc

15 投票
2 回答
6428 浏览
提问于 2025-04-11 19:15

我正在使用python和pyodbc,想要访问一个存储过程的第二个结果集。根据我的了解,pyodbc似乎不支持多个结果集。而且,我不能修改这个存储过程。有没有什么办法可以通过SQL或者其他方法来访问第二个结果集?比如说,创建一个新的存储过程,只返回第一个存储过程的第二个结果集?

2 个回答

0

这里有几种可能的方法,具体可以参考这个链接。如果你得到的结果集都是一样的,可能可以用INSERT...EXEC这种方式。否则,OPENQUERY也许能帮到你。

20

没必要搞得太复杂。只需要使用游标的 nextset() 方法 就可以了:


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

撰写回答