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()
  • 如何使用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)])
    

  • 你们觉得怎么样

    资料来源:

    好吧,我想出来了

    根据您的输出结果,以下是我所做的工作:

    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]