Skip to main content
Skip table of contents

executeProcedure

Versionshinweise

ab 17.1.11

(von 12.2 - 17.1.11 --> LogicScriptUtils.executeProcedure(); Alte Skripte sind weiterhin lauffähig!)

Code

GROOVY
Serializable[]  SQLUtils.executeProcedure(String statement, Serializable[] parameter, Class[] resultTyps)

Beschreibung

Führt eine SQL-Prozedur (stored procedure) mit den übergebenen Parametern aus.

Man beachte, dass Prozeduren keine Funktionen sind. Um eine Funktion aufzurufen, muss man zusätzlich eine Prozedur schreiben, die die gewünschte Funktion aufruft und ihr Ergebnis als out-Parameter zurückgibt.

  • statement - Ein SQL Statement zum Aufruf eine Prozedur. Parameter werden mit "?" gekennzeichnet. Die Ausgabeparameter müssen nach den Eingabeparametern definiert werden.
  • parameter - Ein Array von Werten. Sie werden an die in-Parameter der Prozedur übergeben.
  • resultTyps - Ein Array von Java-Klassen, welche den out-Parametern der Prozedur entsprechen.

Unter Groovy ist zu beachten, dass man die Arrays nicht mit dem new-Befehl von Java erzeugen kann. Der Befehl muss daher so aufgerufen werden:

GROOVY
Serializable[] params = [ value1 ]
Class[] resultclasses = [ Integer.class ]
Serializable[] ret = SQLUtils.executeProcedure("...", params, resultclasses)

Der Befehl gibt die out-Parameter als Array zurück, und zwar umgewandelt in die Klassen, die man in resultclasses angegeben hat.

Beispiele

  • für MS SQL
SQL
CREATE PROCEDURE DoSomething (@param1 VARCHAR(50), @return VARCHAR(100) OUTPUT) AS
BEGIN
    SET @return =  'Prozedur ''DoSomething'' wurde mit Parameter ' + @param1 + ' aufgerufen';
END
GROOVY
Serializable[] params = [ "Parameter 1"]
Class[] classes = [ String.class ]
Serializable[] ret = LogicScriptUtils.executeProcedure("{call dbo.DoSomething(?,?)}", params, classes);
  • für Oracle
SQL
CREATE OR REPLACE PROCEDURE evijet.DoSomething(p_param1 IN varchar2, p_return OUT varchar2) AS
BEGIN
p_return := 'Prozedur ''DoSomething'' wurde mit Parameter ' || p_param1 || ' aufgerufen';
END;
GROOVY
Serializable[] params = [ "Parameter 1"]
Class[] classes = [ String.class ]
Serializable[] ret = LogicScriptUtils.executeProcedure("call evijet.DoSomething(?,?)", params, classes);

Hinweis

Beim Aufruf einer SQL Prozedur ist dringend auf die Ein- / Ausgabeparameter zu achten. Gibt die Prozedur beispielsweise keinen Wert zurück, so darf auch keine Klasse für den Rückgabewert angegeben werden.

GROOVY
Serializable[] params = [ "Parameter 1"]
Class[] classes = []
executeSQLProcedure("exec <Name der Prozedur>", params, classes);

Falls hier ein Fehler unterläuft, kann die Prozedur nicht ausgeführt werden.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.