Python 使用pymssql,如何调用具有输出的存储过程
这段代码可以工作,但不确定如何获得输出Python 使用pymssql,如何调用具有输出的存储过程,python,sql-server,exec,pymssql,Python,Sql Server,Exec,Pymssql,这段代码可以工作,但不确定如何获得输出 storedProcedure = "dbo.myproc" cursor = conn.cursor() query = """DECLARE @test_suite_dispatch_id int; exec {sp} @test_suite_id={id}, @test_suite_dispatch_id = @test_suite_dispatch_id OUTPUT """.format
storedProcedure = "dbo.myproc"
cursor = conn.cursor()
query = """DECLARE @test_suite_dispatch_id int;
exec {sp} @test_suite_id={id},
@test_suite_dispatch_id = @test_suite_dispatch_id OUTPUT
""".format( sp=storedProcedure, id=TestSuiteData['TestSuite_ID'])
print( query )
cursor.execute( query )
cursor.close()
out = None
cursor.callproc(storedProcedure,
(TestSuiteData['TestSuite_ID'], out))
这也不起作用:
cursor.callproc(storedProcedure,
[(TestSuiteData['TestSuite_ID']), out])
我也试过:
cursor.callproc(storedProcedure,
[(TestSuiteData['TestSuite_ID']), pymssql.output(int)])
及
msg = cursor.callproc(store_proc, (file_name, '0x0a', pymssql.output(str)))
print(msg[2])
显然,我的存储过程接受不同的值,但您可以使用它运行。首先,您必须导入pymssql.output
from pymssql import output
然后,创建一个新变量,该变量将作为输出参数传递给实际的存储过程(此时,您必须知道输出参数将具有哪种类型,如果不知道,请检查存储过程代码):
您现在所要做的就是将其传递给callproc。在下一个示例中,我的存储过程称为sp_test,它需要4个参数(最后一个参数是输出参数):
sp_测试的结果是一个数组,其中有4个参数传递给存储过程,最后一个参数从中获取值:
[5, 0, 0, 1463]
因为数组索引从0开始,所以从存储过程中得到的返回值是new_value[3]。我正在尝试解决同样的问题。。。我被困在这个问题上:
counter = output(int)
new_value = self.cursor.callproc('sp_test', (5, 0, 0, counter))
return new_value[3]
[5, 0, 0, 1463]