select-statement a [[param &1 = c], d,e, f,g,h,i,j], default k,l,m,n dbAlias = b
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 selektierten Ergebniszeilen wird automatisch auf 1 beschränkt.
Liefert die Datenbank eine Ergebniszeile zurück, ist der Rückgabewert der Funktion der Wert der ersten Spalte. Ansonsten wird k zurückgegeben.
Sind in der Ergebnismenge Spalten vom Typ Blob, wird über den Parameter l festgelegt, ob die Binärdaten Base64-kodiert in die Ergebnislisten geschrieben werden sollen oder nicht. Ist l 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.
Wichtiger 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 |
(optional) Rückgabewert, wenn die Datenbank kein Ergebnis liefert. |
l |
(optional) true, wenn Daten aus einer Spalte vom Typ BLOB Base64-kodiert in die Ergebnislisten aufgenommen werden sollen. Default: false. |
m |
(optional) true für Nur-Lesen-Modus. Default: false. |
n |
(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 |
Ergebnis |
select zipcode from zipcodes |
testdb |
|
|
unbekannt |
|
|
|
01067 |
select city from zipcodes where zipcode = &1 |
testdb |
80336 |
|
unbekannt |
|
|
|
München |
select city from zipcodes where zipcode = &1 |
testdb |
00000 |
|
unbekannt |
|
|
|
unbekannt |
select city from zipcodes where zipcode = @1:i@ |
testdb |
80336 |
|
unbekannt |
|
|
|
München |
select city from zipcodes where zipcode = @1:i@ |
testdb |
00000 |
|
unbekannt |
|
|
|
unbekannt |
select pin from atmdata where username = '&1' and passwd = '&2' |
testdb |
root |
geheim |
unbekannt |
|
|
|
4711 |
select pin from atmdata where username = '&1' and passwd = '&2' |
testdb |
root |
' or ''=' |
unbekannt |
|
|
|
4711 |
select pin from atmdata where username = @1:s@ and passwd = @2:s@ |
testdb |
root |
' or ''=' |
unbekannt |
|
|
|
unbekannt |
select pin from atmdata where username = &1 and passwd = &2 |
testdb |
root |
geheim |
unbekannt |
|
|
|
Fehler, da Textliterale in Hochkommas stehen müssen. |
Siehe auch
Klasse DefaultSQLCron zum Thema "Parameter für Prepared Statements“
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)
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])