繁体   English   中英

如何检索存储过程的 output 参数?

[英]How to retrieve an output parameter of a stored procedure?

我正在尝试执行一个 SQL 存储过程,该过程执行一些插入更新,并且我将一个名为lcLogSessionId的参数传递给它。 在程序执行期间,如果有错误,此参数设置为 1,如果一切正常,则保持为 0。 在我的 python 脚本中,我需要在存储过程执行结束时检索该值。

这是我的代码:

stored_proc = "Exec [APP].[dataImport] @lcLogSessionId = %s"%(0)
conn = pyodbc.connect(connection_string, autocommit = True)
cursor = conn.cursor()
cursor.execute(stored_proc)

我尝试使用row = cursor.fetchone()获取 cursor ,但我收到一条错误消息,提示“没有结果。以前的 Z9778840A0100CB30C982876741B0B5A2 不是查询”。 有没有办法获取lcLogSessionId的值?

pyodbc 当前未实现可选的.callproc()方法,因此需要一种解决方法来检索 output 参数和返回值。 对于 SQL 服务器,它涉及一个匿名代码块来执行存储过程,然后是 SELECT 值,例如,

sql = """\
DECLARE @out nvarchar(max);
EXEC [dbo].[test_for_pyodbc] @param_in = ?, @param_out = @out OUTPUT;
SELECT @out AS the_output;
"""
params = ("Burma!", )
crsr.execute(sql, params)
rows = crsr.fetchall()
while rows:
    print(rows)
    if crsr.nextset():
        rows = crsr.fetchall()
    else:
        rows = None

pyodbc wiki 上的更多详细信息:

https://github.com/mkleehammer/pyodbc/wiki/Calling-Stored-Procedures#output-parameters-and-return-values

暂无
暂无

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

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