call db procedure a with ResultSet into Map/List k [[param &1 = c], d,e, f,g,h,i], delimiter j, l, dbAlias = b
Gruppe |
Wichtiger Hinweis: Die Rückgabe des Resultsets funktioniert mit Oracle-Datenbanken nicht.
Führt eine Stored Procedure (SQL-Befehl) a auf der Datenbank aus, die durch den Alias b repräsentiert wird. Im Statement hinterlegte Platzhalter der Form &Parameternummer werden durch die Werte ab Parameter c bis i ersetzt. Zeichen, die für eine gültige Syntax des Statements erforderlich sind (z.B. Hochkommas um Zeichenketten) müssen bereits im Statement enthalten sein. Eine Begrenzung der Ergebnismenge findet nicht statt. Sollten also weniger Zeilen gelesen werden, muss dies über eine entsprechende LIMIT-Anweisung im SQL geschehen.
Die Ergebnistabelle wird entweder in eine Named Map oder eine Named List mit Namen k geschrieben. Dabei entscheidet Parameter l ob in eine Map (leer oder false) oder eine List (true) geschrieben wird. Der Wert der ersten Spalte wird im Fall einer Map als Schlüssel angesehen, falls nicht mit Parameter n eine andere Spalte als Schlüssel definiert wird. Alle Spalten der Ergebniszeile werden - durch Trennzeichen j getrennt - zu einer Zeichenkette zusammengefasst und unter dem Schlüssel als Wert in der Map abgelegt oder in die List geschrieben. Vor dem Schreiben in die Map/Liste wird diese geleert.
Der Rückgabewert der Funktion ist die Anzahl an erhaltenen Datensätzen.
Sind in der Ergebnismenge Spalten vom Typ BLOB, wird über den Parameter m festgelegt, ob die Binärdaten Base64-kodiert in die Ergebnislisten geschrieben werden sollen oder nicht. Hat m den Wert true, wird Base64-kodiert, ansonsten bleiben die Daten unverändert. Gibt es keine solchen Spalten in der Ergebnismenge, hat der Wert des Parameters keinen Effekt.
Parameterbeschreibung
Parameter |
Beschreibung |
a |
SQL-Statement. |
b |
|
c |
Eingabe Parameter &1. |
d |
Eingabe Parameter &2. |
e |
Eingabe Parameter &3. |
f |
Eingabe Parameter &4. |
g |
Eingabe Parameter &5. |
h |
Eingabe Parameter &6. |
i |
Eingabe Parameter &7. |
j |
Delimiter. |
k |
Name der Map/List. |
l |
Benutze Liste anstatt Map. Default: false. |
m |
Inhalt von Blob-Spalten Base64-kodieren (true, false). |
n |
Index der Spalte, die als Map-Key verwendet wird. Default: 1. |
Beispiele
Gegeben sei eine Stored Procedure GetAllProfiles(suchbegriff), welche eine Liste mit Profil-IDs und Profilnamen anhand eines Suchbegriffs als Resultset zurück gibt.
Parameter a |
b |
c |
d…i |
j |
k |
l |
m |
n |
Ergebnis |
CALL GetAllProfiles("&1") |
testdb |
demoprofil |
|
; |
profile_map |
|
|
|
5 |
CALL GetAllProfiles("&1") |
testdb |
demoprofil |
|
; |
profile_list |
true |
|
|
5 |
Hinweis: Die Beispiele oben gelten für den Aufruf in einer MySQL-Datenbank. Falls die Stored Procedure unter MSSQL definiert wurde, verwenden Sie bitte die Syntax {CALL GetAllProfiles("&1")} (also das SQL-Statement in geschweifte Klammern setzen). Wenn die Datenbank über einen Konnektor angebunden ist, dann muss statt call der Befehl execute verwendet werden. Für andere Datenbanken entnehmen Sie die korrekte Syntax bitte der Dokumentation des jeweiligen Herstellers.
Siehe auch
select into list(select a, dbalias b, [c,d,e,f,g,h,i,j],k,l,[m,n,o,p])
select into map(a,b,[param &1 = c], d,e, f,g,h,i,j], delimiter k, map l,m,n,o,p)
select into map(a,b,list name c, delimiter d, map e,f,g,h,i)
select-statement a [[param &1 = c], d,e, f,g,h,i,j], default k,l,m,n dbAlias = b
call db procedure a, alias b, [c,d,e,f,g,h,i,j],k,l,m,[n],o,[p]
update-statement a, alias b [[param &1 = c],d,e,f,g,h,i,j,[k],[l],[m]]
exists db-row(select-statement a [[param &1 = c], d,e,f,g,h,i,j,k,l])
set-vars(select a, dbalias b, [c,d,e,f,g,h,i,j for params &1...&8][,k,l,m,n])