## CREATE DBPROC[EDURE]-Anweisung (create_dbproc_statement)

Die CREATE DBPROC[EDURE]-Anweisung (create_dbproc_statement) definiert eine Datenbankprozedur.

### Syntax

<create_dbproc_statement> ::= CREATE DBPROC[EDURE] <dbproc_name> [(<formal_parameter>,...)] [RETURNS CURSOR] AS <routine>

<formal_parameter> ::=
IN <argument> <data_type>
| OUT <argument> <data_type>
| INOUT <argument> <data_type>

<argument> ::= <identifier>

### Beispiele

SQL-Tutorial, Datenbankprozeduren

### Erläuterung

Wenn im Datenbankprozedurnamen kein Schema angegeben ist, wird implizit das aktuelle Schema angenommen.

Die Datenbankprozedur wird dem implizit ermittelten oder dem explizit angegebenen Schema zugeordnet. Der aktuelle Benutzer muss das CREATEIN-Privileg für dieses Schema besitzen. Der Prozedurname muss sich von den Namen aller bereits im Schema existierenden Datenbankprozeduren unterscheiden.

Der aktuelle Benutzer ist der Eigentümer einer Datenbankprozedur. Er besitzt das EXECUTE-Privileg zur Ausführung der Datenbankprozedur.

#### 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 Anwendung.

#### 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.

#### RETURNS CURSOR

Bei Angabe von RETURNS CURSOR wird eine Datenbankprozedur definiert, deren Aufruf eine Ergebnistabelle liefert.

Der Name dieser Tabelle wird durch die Systemvariable $CURSOR definiert. In der Datenbankprozedur muss deshalb eine Anweisung enthalten sein, die eine Ergebnistabelle mit dem Ergebnismengennamen $CURSOR erzeugt.

Der Wert von $CURSOR wird von den meisten Programmierspracheneinbettungen bereits vorgegeben, kann jedoch auch in der Datenbankprozedur explizit vergeben werden.

CREATE DBPROC hotels_of_town (IN zip CHAR(5))
RETURNS CURSOR AS
$CURSOR = 'HOTEL_CURSOR';
DECLARE :$CURSOR CURSOR FOR
SELECT * FROM hotel.hotel WHERE zip = :zip;

Siehe auch:

CREATE SYSTEM TRIGGER-Anweisung

CREATE TRIGGER-Anweisung