2016-04-12 13 views
1

Ich benutze soapui5.1.3 groovy Skript Testschritt, um eine MS SQL gespeicherte Prozedur "find" mit Beginn, Ende und ID-Parameter als Eingaben für gespeicherte Prozedur auszuführen.Soapui Test Schritt groovy Skript gespeicherte Prozedur aufrufen und Ergebnisse zurückgeben

Unten ist meine Syntax, ich möchte alle Zeilen mit dem Spaltennamen "empName" drucken. Aber wenn ich unten Syntax ausführen, die Ergebniswert als 0 erhält.

Kann jemand bitte mit richtiger Syntax helfen?

 
def result = sql.call("{call find @begin = '01/01/2016 10:00' @end = '01/02/2016 10:00', @id = '1'}") 
log.info(result) 
+0

Bitte überprüfen Sie [this] (http://stackoverflow.com/questions/31119400/how-to-run-below-pl-sql-code-from-groovy-againts-oracle-database) Link, um zu sehen, ob das hilft. – Rao

+0

@ahs können Sie Ihre gespeicherte Prozedur teilen? – albciff

Antwort

1

Sie können es wie folgt:

def rowsAffected = sql.call("{call find('01/01/2016 10:00','01/02/2016 10:00','1')}") 
println rowsAffected 

Oder alternativ Passieren die Parameter:

def rowsAffected = sql.call("{call find(?,?,?)}",['01/01/2016 10:00','01/02/2016 10:00','1']) 
println rowsAffected 

Wenn Sie jedoch ein Ergebnis erhalten wollen, anstatt nur die betroffenen Zeilen, die Sie sehen kann es tun:

sql.call("{? = call find(?,?,?)}", [Sql.VARCHAR, '01/01/2016 10:00','01/02/2016 10:00','1'], 
{ empName-> 
    println empName 
}) 

In diesem letzten Beispiel beachten Sie, dass das erste Element im Array params der Typ der Rückgabevariable ist, ich nehme an, dass es ein VARCHAR ist, aber ändern Sie entsprechend, wenn Ihr PROCEDURE einen anderen Typ zurückgibt.

Schauen Sie sich groovy.sql.Sql API an, da es gute Beispiele für Sql.call methods gibt.

HINWEIS: Um es zu nutzen mit SOAPUI erinnern Ihre DB herstellerspezifischen Bibliotheken in $SOAPUI_HOME/bin/ext Ordner abzulegen und dann neu starten SOAPUI, um die DB .jar zu laden.