CREATE DBPROC-Anweisung (create_dbproc_statement) 
Die CREATE DBPROC-Anweisung (
create_dbproc_statement) definiert eine Datenbankprozedur.Syntax
<create_dbproc_statement> ::= CREATE DBPROC <procedure_name> [(<formal_parameter>,..)] AS <routine>
<formal_parameter> ::=
IN <argument> <data_type>
| OUT <argument> <data_type>
| INOUT <argument> <data_type>
<argument> ::= <identifier>
procedure_name, data_type, identifier, routine
Die Datenbankprozedur bestimmt den durchschnittlichen Preis für Einzelzimmer in Hotels, die im angegebenen Postleitzahlenbereich liegen.
CREATE DBPROC avg_price (IN plz CHAR(5), OUT avg_price FIXED(6,2)) AS
VAR summe FIXED(10,2); preis FIXED(6,2); hotels INTEGER;
TRY
SET summe = 0; SET hotels = 0;
SELECT preis FROM reisen.raum,reisen.hotel WHERE plz = :plz AND
raum.hnr = hotel.hnr AND raumtyp = 'EINZEL';
WHILE $rc = 0 DO BEGIN
FETCH INTO :preis;
SET summe = summe + preis;
SET hotels = hotels + 1;
END;
CATCH
IF $rc <> 100 THEN STOP ($rc, 'Unerwarteter Fehler');
IF hotels > 0 THEN SET avg_price = summe / hotels
ELSE STOP (100, 'Kein Hotel gefunden');
Erläuterung
Eine Datenbankprozedur ist ein Unterprogramm, das im SAP DB-Server abläuft. Zur Formulierung des Programms stellt SAP DB eine Sprache (spezielle SQL-Syntax, die um Variablen, Kontrollstrukturen und Möglichkeiten zur Fehlerbehandlung erweitert wurde) bereit, die verwendet werden kann, um Datenbankprozeduren und
Trigger zu definieren.Der aktuelle Benutzer ist der Eigentümer einer Datenbankprozedur. Er besitzt das EXECUTE-Privileg zur Ausführung der Prozedur.
Parameter
Eine Anwendung tauscht beim Aufruf der Datenbankprozedur durch die
CALL-Anweisung Daten über Parameter aus, die durch die formalen Parameter (formal_parameter) definiert werden. Einem formalen Parameter der Datenbankprozedur entspricht normalerweise eine Variable der Applikation.IN | OUT | INOUT
Der Modus des Parameters (IN | OUT | INOUT) legt fest, in welche Richtung die Daten beim Aufruf der Prozedur übergeben werden.
IN: Durch IN wird ein Eingabeparameter definiert, d.h. beim Aufruf der Datenbankprozedur wird der Wert der Variablen an die Datenbankprozedur übertragen.
OUT: Durch OUT wird ein Ausgabeparameter definiert, d.h. nach Beendigung der Prozedur wird der Wert des formalen Parameters aus der Datenbankprozedur an die Variable übertragen.
INOUT: Durch INOUT wird ein Ein-/Ausgabeparameter definiert, der die Möglichkeiten von IN und OUT kombiniert.
Argument
Durch die Angabe eines Arguments (
argument) wird einem formalen Parameter der Datenbankprozedur ein Name zugeordnet. Innerhalb der Datenbankprozedur kann der Parameter dann mit diesem Namen als Variable in Ausdrücken und Zuweisungen benutzt werden.Datentyp
Als Datentyp (
data_type) des formalen Parameters einer Datenbankprozedur sind nur die Datentypen BOOLEAN, CHAR[ACTER], DATE, FIXED, FLOAT, INT[EGER], NUMBER, REAL, SMALLINT, TIME, TIMESTAMP und VARCHAR zulässig.Weitere Informationen
routine