此代码有效,但不确定如何获取输出?
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()
如何使用pymssql的callproc方法实现上述功能?
此代码不起作用:
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)])
和
cursor.callproc(storedProcedure,
[(TestSuiteData['TestSuite_ID']), pymssql.output(long)])
你们有什么想法?
答案 0 :(得分:2)
好的,我明白了。
根据您的输出结果,这是我所做的并且有效:
msg = cursor.callproc(store_proc, (file_name, '0x0a', pymssql.output(str)))
print(msg[2])
显然我的存储过程接受不同的值,但您可以使用它。
答案 1 :(得分:0)
首先,您必须导入pymssql.output
from pymssql import output
然后,创建一个新变量,该变量将作为输出参数传递给实际的存储过程(此时,您必须知道输出参数将具有哪种类型,如果不知道,请检查存储过程代码):
counter = output(int)
您现在要做的就是将其传递给callproc。在下一个示例中,我的存储过程称为sp_test,它需要4个参数(最后一个参数是输出参数):
new_value = self.cursor.callproc('sp_test', (5, 0, 0, counter))
return new_value[3]
sp_test的结果是一个数组,该数组具有4个传递给存储过程的参数,最后一个从中获取值:
[5, 0, 0, 1463]
由于数组索引从0开始,所以您将从存储过程中以new_value [3]形式返回的值。