Anfang des Inhaltsbereichsstatement Dokument im Navigationsbaum lokalisieren

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) oder eines Triggers (siehe CREATE TRIGGER-Anweisung) verwendet werden.

Syntax

<statement> ::= BEGIN <statement_list> END
| BREAK | CONTINUE | CONTINUE EXECUTION
| <if_statement> | <while_statement> | <assignment_statement>
| 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>

<routine_sql_statement> ::=
<call_statement> | <close_statement> | <create_table_temp>
| <declare_cursor_statement> | <delete_statement> | <fetch_statement>
| <insert_statement> | <lock_statement>
| <select_statement> | <named_select_statement> | <single_select_statement>
| <select_direct_statement:_searched> | <select_direct_statement:_positioned>
| <select_ordered_statement:_searched> | <select_ordered statement:_positioned>
| <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.

expression, search_condition, 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, select_direct_statement:_searched, select_direct_statement:_positioned, select_ordered_statement:_searched, select_ordered_statement:_positioned, subtrans_statement, update_statement, identifier

Erläuterung

Variablen, die in einer routine angegeben sind, kann mit Hilfe der Anweisung (assignment_statement) ein Wert zugewiesen werden.

Kontrollstrukturen

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.

Fehlerbehandlung

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.

SQL-Anweisungen (routine_sql_statement)

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 CALL-Anweisung kann nicht in der SAP DB-Version 7.2 und für die SAP DB-Version 7.3 erst ab der Version 7.3.0.18 verwendet werden.

Restriktionen

Die Anweisungsfolge (statement_list) darf nicht mehr 255 SQL-Anweisungen enthalten.

Die Länge einer SQL-Anweisung (routine_sql_statement) darf ca. 8KB nicht überschreiten.

Ende des Inhaltsbereichs