In folgenden SQL-Anweisungen zur Erstellung und Gestaltung von Routinen können weitere SQL-Anweisungen verwendet werden:
CREATE FUNCTION, CREATE PROCEDURE
CASE, COMPOUND (dort auch in Fehler-Routinen), FOR, IF, LOOP, REPEAT, WHILE
Für einige dieser Anweisungen sind Einschränkungen zu beachten.
Um diese Anweisungen leichter lesbar zu machen, wird das Syntaxelement routine_sql_anweisung für diese weiteren SQL-Anweisungen hier zentral beschrieben.
routine_sql_anweisung ::=
{
case_anweisung
for_anweisung
if_anweisung
iterate_anweisung
leave_anweisung
loop_anweisung
repeat_anweisung
set_anweisung
while_anweisung
return_anweisung
call_anweisung
single_row_select_anweisung
insert_anweisung
update_searched_anweisung
delete_searched_anweisung
merge_anweisung
open_anweisung
fetch_anweisung
update_positioned_anweisung
delete_positioned_anweisung
close_anweisung
get_diagnostics_anweisung
signal_anweisung
resignal_anweisung
}
routine_sql_anweisung
routine_sql_anweisung hat eine maximale Länge von 32000 Zeichen.
Die erlaubten SQL-Anweisungen sind in folgenden Gruppen dargestellt:
Kontrollanweisungen
case_anweisung
CASE-Anweisung, die bedingt weitere SQL-Anweisungen durchführt, siehe Abschnitt „CASE - SQL-Anweisungen bedingt ausführen".
for_anweisung
FOR-Anweisung, die weitere SQL-Anweisungen in einer Schleife durchführt, siehe Abschnitt „FOR - SQL-Anweisungen in einer Schleife ausführen".
if_anweisung
IF-Anweisung, die bedingt weitere SQL-Anweisungen durchführt, siehe Abschnitt „IF - SQL-Anweisungen bedingt ausführen".
iterate_anweisung
ITERATE-Anweisung, die zum nächsten Schleifendurchlauf wechselt, siehe Abschnitt „ITERATE - zum nächsten Schleifendurchlauf wechseln".
leave_anweisung
LEAVE-Anweisung, die Schleifen oder COMPOUND-Anweisungen abbricht, siehe Abschnitt „LEAVE - Schleife oder COMPOUND-Anweisung beenden".
loop_anweisung
LOOP-Anweisung, die in einer Schleife weitere SQL-Anweisungen durchführt, siehe Abschnitt „LOOP - SQL-Anweisungen in einer Schleife ausführen".
repeat_anweisung
REPEAT-Anweisung, die weitere SQL-Anweisungen in einer Schleife durchführt, siehe Abschnitt „REPEAT - SQL-Anweisungen in einer Schleife ausführen".
set_anweisung
SET-Anweisung, die einem Prozedurparameter oder einer lokalen Prozedurvariablen einen Wert zuweist, siehe Abschnitt „SET - Wert zuweisen".
while_anweisung
WHILE-Anweisung, die weitere SQL-Anweisungen in einer Schleife durchführt, siehe Abschnitt „WHILE - SQL-Anweisungen in einer Schleife ausführen".
return_anweisung
RETURN-Anweisung, die einen Rückgabewert für die UDF liefert, siehe Abschnitt „RETURN - Rückgabewert einer User Defined Function (UDF) liefern" .
Diese Anweisung darf in Prozeduren nicht verwendet werden.call_anweisung
CALL-Anweisung, die eine weitere Prozedur aufruft, siehe Abschnitt „CALL - Prozedur ausführen".
Die Pragmas DEBUG ROUTINE und LOOP LIMIT haben vor einer CALL-Anweisung in einer Prozedur keine Wirkung, siehe Abschnitt „CALL - Prozedur ausführen".Pragmas zur Optimierung können auch bei einer CALL-Anweisung in einer Prozedur angegeben werden. Sie wirken sich dann auf die Optimierung der Aufrufwerte aus.SQL-Anweisungen zum Abfragen und Ändern von Daten ohne Cursor
single_row_select_anweisung
SELECT-Anweisung, die einen einzelnen Satz liest, siehe Abschnitt „SELECT - Einzelnen Satz lesen".
insert_anweisung
INSERT-Anweisung, die Sätze in eine bestehende Tabelle einfügt, siehe Abschnitt „INSERT - Sätze in Tabelle einfügen".
Diese Anweisung darf in UDFs nicht verwendet werden.update_searched_anweisung
UPDATE-Anweisung, die in einer Tabelle die Spalten der Sätze ändert, die eine bestimmte Suchbedingung erfüllen, siehe Abschnitt „UPDATE - Spaltenwerte ändern".
Diese Anweisung darf in UDFs nicht verwendet werden.delete_searched_anweisung
DELETE-Anweisung, die in einer Tabelle die Sätze löscht, die eine bestimmte Suchbedingung erfüllen, siehe Abschnitt „DELETE - Sätze löschen"
"DELETE - Sätze löschen".
Diese Anweisung darf in UDFs nicht verwendet werden.merge_anweisung
MERGE-Anweisung, die in Abhängigkeit von einer bestimmten Bedingung Sätze in einer Tabelle ändert oder Sätze in eine Tabelle einfügt, siehe Abschnitt „MERGE - Sätze in Tabelle einfügen oder Spaltenwerte ändern".Diese Anweisung darf in UDFs nicht verwendet werden.
SQL-Anweisungen zum Abfragen und Ändern von Daten mit Cursor
Diese Anweisungen sind nur erlaubt für einen lokalen Cursor, der innerhalb einer COMPOUND-Anweisung definiert ist.
open_anweisung
OPEN-Anweisung, die einen Cursor öffnet, siehe Abschnitt „OPEN - Cursor öffnen".
fetch_anweisung
FETCH-Anweisung, die einen Cursor positioniert und ggf. den aktuellen Satz liest, siehe Abschnitt „FETCH - Cursor positionieren und Satz lesen".
update_positioned_anweisung
UPDATE-Anweisung, die in einer Tabelle die Spalten des Satzes ändert, auf den der Cursor positioniert ist, siehe Abschnitt „UPDATE - Spaltenwerte ändern".
Diese Anweisung darf in UDFs nicht verwendet werden.delete_positioned_anweisung
DELETE-Anweisung, die in einer Tabelle den Satz löscht, auf den der Cursor positioniert ist, siehe Abschnitt „DELETE - Sätze löschen". Diese Anweisung darf in UDFs nicht verwendet werden.
close_anweisung
CLOSE-Anweisung, die einen Cursor schließt, siehe Abschnitt „CLOSE - Cursor schließen".
Diagnoseanweisungen
get_diagnostics_anweisung
GET DIAGNOSTICS-Anweisung zur Ausgabe von Diagnoseinformationen, siehee Abschnitt „GET DIAGNOSTICS - Diagnoseinformationen ausgeben".
signal_anweisung
SIGNAL-Anweisung, die einen Fehler in der Routine meldet, siehe Abschnitt „SIGNAL - Fehler in Routine melden".
resignal_anweisung
RESIGNAL-Anweisung, die einen Fehler in der Fehler-Routine meldet siehe Abschnitt „RESIGNAL - Fehler in lokaler Fehler-Routine melden".