statement ist ein Syntaxelement, das in einer routine verwendet wird. Die in der statement-Syntaxbeschreibung genannten Anweisungen können zur Definition einer Datenbankprozedur (siehe CREATE DBPROC-Anweisung), eines Triggers (siehe CREATE TRIGGER-Anweisung) oder einer Datenbankfunktion (siehe CREATE FUNCTION-Anweisung) verwendet werden.
<statement> ::= BEGIN <statement_list> END | BREAK | CONTINUE | CONTINUE EXECUTE
| <if_statement> | <while_statement> | <assignment_statement> | <case_statement>
| RETURN [<expression>]
| STOP (<expression> [,<expression>] )
| TRY <statement_list>; CATCH
<statement>
| <routine_sql_statement>
<statement_list> ::= <statement> | <statement_list> ; <statement>
<if_statement> ::= IF <search_condition> THEN <statement> [ELSE
<statement>]
<while_statement> ::= WHILE <search_condition> DO <statement>
<assignment_statement> ::= [SET] <variable_name> = <expression>
<case_statement> ::= <simple_case_statement> | <searched_case_statement>
<routine_sql_statement> ::=
<call_statement> | <close_statement> | <create_table_temp> | <drop_table_temp>
| <declare_cursor_statement> | <delete_statement> | <fetch_statement>
| <insert_statement> | <lock_statement>
| <select_statement> | <named_select_statement> | <single_select_statement>
| <subtrans_statement> | <update_statement>
<variable_name> ::= <identifier>
<create_table_temp> :: = <create_table_statement> für das Anlegen temporärer Tabellen, d.h. der Tabellenname table_name in der CREATE TABLE-Anweisung muß die Form TEMP.<identifier> haben.
<drop_table_temp> ::= DROP TABLE TEMP.<identifier>
expression, search_condition, simple_case_statement, searched_case_statement, call_statement, close_statement, create_table_statement, declare_cursor_statement; delete_statement, fetch_statement, insert_statement, lock_statement, select_statement, named_select_statement, single_select_statement, subtrans_statement, update_statement, identifier
Variablen, die in einer routine angegeben sind, kann mit Hilfe der Anweisung (assignment_statement) ein Wert zugewiesen werden.
Die IF-Anweisung (if_statement) wertet zunächst die Suchbedingung aus. Ist diese erfüllt, so wird die im THEN-Zweig definierte Anweisung ausgeführt, andernfalls wird - wenn vorhanden - die Anweisung im ELSE-Zweig ausgeführt.
Die WHILE-Anweisung (while_statement) ermöglicht die bedingte Wiederholung von Anweisungen. Solange die angegebene Suchbedingung zutrifft, wird die Anweisung ausgeführt. Insbesondere wird die Bedingung vor der ersten Ausführung der Anweisung geprüft. Gegebenenfalls wird die Anweisung also gar nicht ausgeführt. Durch Angabe von BREAK kann die Schleife sofort ohne Überprüfung der Bedingung verlassen werden. Die Angabe von CONTINUE innerhalb der Schleife bewirkt, dass die Bedingung sofort neu bewertet und die Schleife abhängig vom Resultat erneut durchlaufen oder verlassen wird.
Die CASE-Anweisung (case_statement) erlaubt die bedingt Anweisungsausführung abhängig von Suchbedingungen oder der Gleichheit von Operanden. Es werden einfache und allgemeine CASE-Anweisungen unterschieden.
RETURN
CREATE DBPROC- und CREATE TRIGGER-Anweisung: Die Angabe von RETURN ermöglicht das sofortige fehlerfreie Verlassen der umgebenden Datenbankprozedur.
CREATE FUNCTION-Anweisung: Die Angabe von RETURN <expression> ermöglicht das Verlassen der Datenbankfunktion bei gleichzeitiger Übergabe des Funktionswertes <expression>.
Wenn in der Anweisungsfolge zwischen TRY und CATCH ein SQL-Fehler auftritt, wird unverzüglich in die auf das CATCH folgende Anweisung verzweigt. In dieser Anweisung kann die eigentliche Fehlerbehandlung programmiert werden. Wird hier CONTINUE EXECUTE ausgeführt, erfolgt ein Sprung unmittelbar hinter die Anweisung, die den Fehler ausgelöst hat.
Durch Aufruf der STOP-Funktion wird die Ausführung der Datenbankprozedur sofort unterbrochen. Der Wert des ersten Parameters der STOP-Funktion ist die Rück- oder Fehlermeldung, die die Anwendung als Resultat des Aufrufs der Datenbankprozedur erhält. Zusätzlich kann ein Fehlertext geliefert werden.
In den SQL-Anweisungen (routine_sql_statement) der Datenbankprozedur müssen Tabellen immer vollständig, d.h. unter Angabe des Eigentümers angegeben werden. Im Falle von SELECT-Anweisungen reicht die vollständige Angabe des Tabellennamens in der FROM-Klausel.
Die Anweisungsfolge (statement_list) darf nicht mehr 255 SQL-Anweisungen enthalten.
Die Länge einer SQL-Anweisung (routine_sql_statement) darf ca. 8 KB nicht überschreiten.