Anfang des InhaltsbereichsCREATE DBPROC-Anweisung (create_dbproc_statement) Dokument im Navigationsbaum lokalisieren

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

Beispiel

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

Ende des Inhaltsbereichs