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

2024-09-29 07:18:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图执行一个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()获取游标,但是我得到一个错误,它说“没有结果。以前的SQL不是查询”。 有没有办法获得lcLogSessionId的值


Tags: 代码脚本appsql参数过程错误proc
1条回答
网友
1楼 · 发布于 2024-09-29 07:18:31

pyodbc当前未实现可选的.callproc()方法,因此需要一种变通方法来检索输出参数和返回值。对于涉及匿名代码块以执行存储过程然后选择值的SQL Server,例如

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

相关问题 更多 >