如何检索存储过程的输出参数?
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()
获取游标,但出现错误消息“无结果。前一个 SQL 不是查询”。
有没有办法获取 lcLogSessionId
的值?
pyodbc 当前未实现可选的 .callproc()
方法,因此需要一种变通方法来检索输出参数和 return 值。对于涉及匿名代码块的 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 上的更多详细信息:
我正在尝试执行一个 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
的值?
pyodbc 当前未实现可选的 .callproc()
方法,因此需要一种变通方法来检索输出参数和 return 值。对于涉及匿名代码块的 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 上的更多详细信息: