如何从Python调用SQL Server 2008 R2中的存储过程获取返回值

0 投票
1 回答
1489 浏览
提问于 2025-04-18 15:42

我需要检查从 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

撰写回答