繁体   English   中英

从存储过程中检索 SQL 服务器 OUTPUT 参数值

[英]Retrieving a SQL Server OUTPUT parameter value from a stored procedure

我一直在关注 PyPi 上 pyodbc 页面上的文档,但我似乎无法让代码正常工作。 https://github.com/mkleehammer/pyodbc/wiki/调用存储过程

使用 Python 3.8.10

conn = pyodbc.connect(connString)
cursor = conn.cursor()
startSQL = '''
    DECLARE @load_id INT;
    EXEC dbo.ETL_StartLoad @JobName = 'test',  @LoadID = @load_id output;
    SELECT @load_id AS Load_ID;
'''
print(startSQL)
cursor.execute(startSQL)
auditList = cursor.fetchall()
print(auditList)

当我运行代码时,它失败并出现以下错误:

auditList = cursor.fetchall()
pyodbc.ProgrammingError: No results.  Previous SQL was not a query.

如果我在 SSMS 中复制并粘贴 SQL 并运行它,那么它就可以正常工作。

最常见的原因

pyodbc.ProgrammingError:没有结果。 以前的 SQL 不是查询。

执行存储过程时,就是过程本身不包括SET NOCOUNT ON; 它执行返回行数的 DML 操作(插入、更新、删除)。 为避免错误,请包括SET NOCOUNT ON; 在匿名代码块的开头,例如,

startSQL = '''\
    SET NOCOUNT ON;
    DECLARE @load_id INT;
    EXEC dbo.ETL_StartLoad @JobName = 'test',  @LoadID = @load_id output;
    SELECT @load_id AS Load_ID;
'''

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM