select into map(a,b,list name c, delimiter d, map e,f,g,h,i)


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 in der Liste c 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 in eine Map mit Namen e geschrieben. Der Wert der ersten Spalte wird hierbei als Schlüssel angesehen, die restlichen Spalten der Ergebniszeile werden - durch Trennzeichen d getrennt - zu einer Zeichenkette zusammengefasst und unter dem Schlüssel als Wert in der Map abgelegt. Vor dem Schreiben in die Map wird diese geleert (kann mit Parameter h unterdrückt werden).

Der Rückgabewert der Funktion ist die Anzahl an erhaltenen Datensätzen in der Ergebnismenge der SQL-Anfrage.

Sind in der Ergebnismenge Spalten vom Typ BLOB, wird über den Parameter f festgelegt, ob die Binärdaten Base64-kodiert in die Ergebnislisten (Einträge der Map) geschrieben werden sollen oder nicht. Ist f gleich 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

Der Datenbank-Alias.

c

Name der Liste mit den Parametern. Es wird nur das erste Element der Liste verwendet. Hinweis: Wenn die Liste mehrere Elemente enthält und Sie alle diese Elemente verarbeiten möchten, können Sie das in einem Schleifen-Knoten tun (→ Pfad-Wert @List:list_name@). Verwenden Sie dazu nach der Anwendung dieser Funktion hier (ohne die Map zu leeren ↔ Parameter h) die Funktion remove from list(value a, name of list b) auf einem Feld innerhalb Ihres Schleifen-Knotens.

d

Trennzeichenfolge.

e

Name der Map.

f

(optional) true, wenn Daten aus einer Spalte vom Typ BLOB Base64-kodiert in die Ergebnislisten aufgenommen werden sollen. Default: false

g

true für "read only"-Modus.

h

(optional) true, wenn die Map vor dem Schreiben nicht gelöscht werden soll. Default: false

i

(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

e

f

g

h

i

Ergebnis

select zipcode, city, county from zipcodes

testdb


;

ZIPS



false


20000

Das Ergebnis ist eine Map ZIPS, die 20000 Einträge mit der Postleitzahl als Schlüssel und der Stadt und deren Bundesland als Wert enthält, z.B. {80336=München;Bayern}.



Parameter a

b

c

d

e

f

g

h

i

Ergebnis

select zipcode, city, county from zipcodes where zipcode = &1

testdb

mylist

;

ZIPS



false


1

select zipcode, city, county from zipcodes where zipcode = @1:i@

testdb

mylist

;

ZIPS



false


1

Erzeugt die zuvor genannte Map mit ausschließlich dem oben genannten Eintrag. Die Liste mylist enthält jeweils einen Eintrag 80336.


Parameter a

b

c

d

e

f

g

h

i

Ergebnis

select zipcode, city, county from zipcodes where county = '&1'

testdb

mylist

;

ZIPS



false


1500

select zipcode, city, county from zipcodes where county = @1:s@

testdb

mylist

;

ZIPS



false


1500

select zipcode, city, county from zipcodes where county = &1

testdb

mylist

;

ZIPS



false


Fehler, da Textliterale in Hochkommas stehen müssen.


Erzeugt in den ersten beiden Fällen die zuvor genannte Map mit allen bayerischen Postleitzahlen. Die Liste mylist enthält jeweils einen Eintrag Bayern.