如何从Python调用SQL Server 2008 R2中的存储过程获取返回值
我需要检查从 SQL Server 2008 R2 的存储过程返回的值。
import pyodbc
sql_str = """
DECLARE @return_value int
SET @return_value = -1
INSERT INTO [my_database].[dbo].[my_table]
EXEC @return_value = [my_database].[dbo].[my_stored_procedure]
if @return_value <> 0
BEGIN
EXEC sys.sp_addmessage 60000, 16, ' test sp returns wrong code ! '
RAISERROR (60000, 16, 1)
END
"""
sql_str_connect_db = " DRIVER={SQL server};SERVER={my_server};DATABASE={my_db};UID=my_id;PWD=my_password "
cnxn = pyodbc.connect(sql_str_connect_db )
cursor_test = cnxn.cursor()
cursor_test.execute(sql_str)
cnxn_test.commit()
但是,我遇到了一个错误:
pyodbc.Error: ('HY007', '[HY007] [Microsoft][ODBC SQL Server Driver]相关语句未准备好 (0) (SQLNumResultCols)')
那么,如何在 Python 中检查 "@return_value" 的值呢?
经过搜索,我找不到解决办法。
谢谢
1 个回答
0
你可以在SQL里这样选择数据:
SELECT @return_value AS return_value
然后用你的游标来获取记录:
rows = cursor_test.fetchall()
for row in rows:
print(row.return_value)
祝好,
-Tim