select into list(select a, dbalias b, [c,d,e,f,g,h,i,j],k,l,[m,n,o,p])
Gruppe |
Führt einen SQL-Select-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 j 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. Die Menge an zurückgegebenen Ergebniszeilen kann über l eingeschränkt werden, 0 führt zu einer unlimitierten Ergebnismenge.
Jede Spalte der Ergebnismenge führt zur Erzeugung einer Named List, deren Namen in der Form k:SPALTENNAME (alles in Großbuchstaben, siehe Beispiele) gebildet wird. Existiert bereits eine Liste mit dem entsprechenden Namen, werden die Werte der bestehenden Liste gelöscht.
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. Ist m 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.
Hinweis: Neben der Schreibweise &Parameternummer ist auch die Schreibweise für "Prepared Statements" in der Form @Parameternummer:Parametertyp@ möglich. Diese verhindert sogenannte SQL Injection Attacks und ist daher zu bevorzugen.
Parameterbeschreibung
Parameter |
Beschreibung |
a |
Auszuführendes SQL-Statement. |
b |
|
c |
(optional) Parameter &1 im Statement. |
d |
(optional) Parameter &2 im Statement. |
e |
(optional) Parameter &3 im Statement. |
f |
(optional) Parameter &4 im Statement. |
g |
(optional) Parameter &5 im Statement. |
h |
(optional) Parameter &6 im Statement. |
i |
(optional) Parameter &7 im Statement. |
j |
(optional) Parameter &8 im Statement. |
k |
Präfix der zu erzeugenden Ergebnislisten. |
l |
(optional) Maximale Anzahl zu lesender Zeilen. Default: 0. |
m |
(optional) true, wenn Daten aus einer Spalte vom Typ BLOB Base64-kodiert in die Ergebnislisten aufgenommen werden sollen. Default: false. |
n |
(optional) true für "read only"-Modus. Default: false. |
o |
(optional) true wenn für die Erweiterung der Listennamen der Displayname und nicht der Spaltenname verwendet werden soll (siehe Beispiele). Default: false. |
p |
(optional) Falls true, dann werden SQL-Fehler, die von der Datenbank gemeldet werden, ignoriert. Default: <leer> (== false). |
Beispiele
Gegeben sei eine Tabelle zipcodes, die die Postleitzahlen von Deutschland enthalte (insgesamt imaginäre 20000 Einträge).
Parameter a |
b |
c |
d…j |
k |
l |
m |
n |
o |
p |
Ergebnis |
select zipcode as zip, city as town from zipcodes |
testdb |
|
|
ZIPS |
0 |
|
|
|
|
20000 |
select zipcode as zip, city as town from zipcodes |
testdb |
|
|
ZIPS |
0 |
|
|
true |
|
20000 |
Im Anschluss der Ausführung von Beispiel 1 wurde die Liste ZIPS:ZIPCODE mit den Werten aus der Spalte zipcode und die Liste ZIPS:CITY mit den Werten aus Spalte city erzeugt. Im Fall von Beispiel 2 lauten die Listennamen ZIPS:ZIP und ZIPS:TOWN.
Parameter a |
b |
c |
d…j |
k |
l |
m |
n |
o |
p |
Ergebnis |
select zipcode, city from zipcodes where zipcode = &1 |
testdb |
80336 |
|
ZIPS |
0 |
|
|
|
|
1 |
select zipcode, city from zipcodes where zipcode = @1:i@ |
testdb |
80336 |
|
ZIPS |
0 |
|
|
|
|
1 |
Erzeugt die zuvor genannten Listen von Beispiel 1 mit jeweils einem Element 80336 bzw. Munich.
Parameter a |
b |
c |
d…j |
k |
l |
m |
n |
o |
p |
Ergebnis |
select zipcode, city from zipcodes where county = '&1' |
testdb |
Bayern |
|
ZIPS |
0 |
|
|
|
|
1500 |
select zipcode, city from zipcodes where county = @1:s@ |
testdb |
Bayern |
|
ZIPS |
0 |
|
|
|
|
1500 |
select zipcode, city from zipcodes where county = &1 |
testdb |
Bayern |
|
ZIPS |
0 |
|
|
|
|
Fehler, da Textliterale in Hochkommas stehen müssen. |
Erzeugt in den ersten beiden Fällen die zuvor genannten Listen mit den Postleitzahlen von Bayern.
Siehe auch
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])