2017-12-23 2 views
0

Ich habe versucht, diesen Code verwenden:pymssql, wie man vorbei Ausgangsparameter

outputparam1 = pymssql.output(int) 
    outputparam2=pymssql.output(int) 
    outputparam3=pymssql.output(int) 

    try: 
     with pymssql.connect('localhost','sa','anypassword', 'anydb') as conn: 
      with conn.cursor(as_dict=True) as cursor: 
       cursor.callproc("storeprocedure_name",('inputparam',outputparam1,outputparam2,outputparam3)) 
    except Exception,e: 
     pass 

und in mssql storeprocedure_name:

ALTER PROCEDURE [dbo].[storeprocedure_name](@inputparam NVarChar(100),           
             @outputparam1 Int Output, 
             @outputparam2 Int Output, 
             @outputparam3 Int Output) As begin end; 

oben Codes noch throw exception "Parameter @ outputparam1 erwarten ..."

wäre jede Hilfe sehr schätzen, dank

Antwort

2
cursor.callproc('storeprocedure_name', (first_param, second_param, an_output_param,)) 

Der zurückgegebene Wert steht dann in der Variablen "an_output_param" zur Verfügung.

In Ihrem Fall sollten Sie dies versuchen.

cursor.callproc("storeprocedure_name",('inputparam', outputparam1, outputparam2, outputparam3,)) 

Versuchen Sie dies auch

sqlcmd = """ 
DECLARE @outputparam1 INT, @outputparam2 INT, @outputparam3 INT 
EXEC storeprocedure_name 
%s, @outputparam1 OUT, @outputparam2 OUT, @outputparam3 OUT 
SELECT @outputparam1, @outputparam2, @outputparam3 
""" 
res = conn.execute_row(sqlcmd, ('inputparam')) 
+0

ja, das ist, was ich versucht, aber wirft Fehlerparameter @ outputparam1 erwarten ... – mysticcode

+0

können Sie die komplette Fehler drucken? –

+0

"Prozedur oder Funktion 'storeprocedure_name' erwartet Parameter '@ outputparam1', der nicht geliefert wurde.DB-Lib Fehlermeldung 20018, Schweregrad 16: Allgemeine SQL Server-Fehler: Überprüfen Sie Nachrichten vom SQL Server " – mysticcode