exists db-row(select-statement a [[param &1 = c], d,e,f,g,h,i,j,k,l])
Gruppe |
Führt den SQL-Befehl a auf der Datenbank aus, die mit dem Alias b repräsentiert wird. Parameter, die im SQL-Befehl über Platzhalter der Form &Parameternummer dargestellt werden, werden durch die Werte ab Parameter c ersetzt. Eventuell für die Syntax notwendige Zeichen wie Hochkommas bei Texten müssen im Statement selbst angegeben werden. Liefert das Statement nach der Ausführung kein Ergebnis zurück, wird false zurückgegeben, ansonsten true.
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) true für "read only"-Modus. Default: false. |
l |
(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 enthält
Parameter a |
b |
c |
d |
e…j |
k |
l |
Ergebnis |
select * from zipcodes |
testdb |
|
|
|
|
|
true |
select * from zipcodes where zipcode = &1 |
testdb |
80336 |
|
|
|
|
true |
select * from zipcodes where zipcode = @1:i@ |
testdb |
80336 |
|
|
|
|
true |
select * from zipcodes where city = '&2' |
testdb |
|
Munich |
|
|
|
true |
select * from zipcodes where city = @2:s@ |
testdb |
|
Munich |
|
|
|
true |
select * from zipcodes where zipcode = &1 and city = '&2' |
testdb |
12345 |
Munich |
|
|
|
false |
select * from zipcodes where zipcode = &1 and city = &2 |
testdb |
12345 |
Munich |
|
|
|
Fehler, da Textliterale in Hochkommas stehen müssen. |
Hinweise
Die Anfrage wird gegenüber der Datenbank automatisch auf eine Ergebniszeile beschränkt, so dass unabhängig von der Anzahl Zeilen in der Tabelle nur eine Zeile zurückgegeben wird. Es ist daher nicht notwendig in das Statement LIMIT-Anweisungen einzubauen.
Wenn neben der reinen Information, ob überhaupt Werte vorhanden sind, im Anschluss mit eigentlichen Werten gearbeitet werden soll, ist es besser mittels einer der Select-Funktionen direkt den Abruf zu machen und auf die Existenz eines gelesenes Wertes zu prüfen.
Siehe auch
DefaultSQLCron ('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)
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]]
set-vars(select a, dbalias b, [c,d,e,f,g,h,i,j for params &1...&8][,k,l]