Verwendet für
Erstellen einer neuen gespeicherten Funktion
Syntax
CREATE FUNCTION funcname [ ( [ <in_params> ] ) ]
RETURNS <domain_or_non_array_type> [COLLATE collation]
[DETERMINISTIC]
{<psql_function> | <external-module-body>}
<in_params> ::= <inparam> [, <inparam> ... ]
<inparam> ::= <param-decl> [ { = | DEFAULT } <value> ]
<value> ::= { <literal> | NULL | <context-var> }
<param-decl> ::= paramname <domain_or_non_array_type> [NOT NULL]
[COLLATE collation]
<domain_or_non_array_type> ::=
!! Vgl. Skalardatentyp-Syntax !!
<psql_function> ::=
[SQL SECURITY {INVOKER | DEFINER}]
<psql-module-body>
<psql-module-body> ::=
!! Vgl. Syntax des Modulrumpfes !!
<external-module-body> ::=
!! Vgl. Syntax des Modulrumpfes !!
Table 1. CREATE FUNCTION
-Anweisungsparameter
Parameter |
Beschreibung |
funcname |
Name der gespeicherten Funktion.Maximal 63 Zeichen.Muss unter allen Funktionsnamen in der Datenbank eindeutig sein. |
inparam |
Beschreibung der Eingabeparameter |
collation |
Sortierreihenfolge |
literal |
Ein Literalwert, der mit dem Datentyp des Parameters zuweisungskompatibel ist |
context-var |
Jede Kontextvariable, deren Typ mit dem Datentyp des Parameters kompatibel ist |
paramname |
Der Name eines Eingabeparameters der Funktion.Er kann aus bis zu 63 Zeichen bestehen.Der Name des Parameters muss unter den Eingabeparametern der Funktion und ihren lokalen Variablen eindeutig sein. |
Die Anweisung CREATE FUNCTION
erstellt eine neue gespeicherte Funktion.Der gespeicherte Funktionsname muss unter den Namen aller gespeicherten und externen (alten) Funktionen eindeutig sein, mit Ausnahme von Unterfunktionen oder Funktionen in Paketen.Bei Unterfunktionen oder Funktionen in Paketen muss der Name innerhalb ihres Moduls (Paket, Stored Procedure, Stored Function, Trigger) eindeutig sein.
Note
|
Es ist ratsam, Funktionsnamen zwischen globalen gespeicherten Funktionen und gespeicherten Funktionen in Paketen nicht wiederzuverwenden, obwohl dies zulässig ist.Momentan ist es nicht möglich, eine Funktion oder Prozedur aus dem globalen Namensraum innerhalb eines Pakets aufzurufen, wenn dieses Paket eine Funktion oder Prozedur mit demselben Namen definiert.In dieser Situation wird die Funktion oder Prozedur des Pakets aufgerufen.
|
CREATE FUNCTION
ist eine zusammengesetzte Anweisung mit einem Header und einem Body.Der Header definiert den Namen der gespeicherten Funktion und deklariert Eingabeparameter und Rückgabetyp.
Der Funktionsrumpf besteht aus optionalen Deklarationen von lokalen Variablen, benannten Cursorn und Unterprogrammen (Unterfunktionen und Unterprozeduren) und einer oder mehreren Anweisungen oder Anweisungsblöcken, eingeschlossen in einen äußeren Block, der mit dem Schlüsselwort BEGIN
beginnt und endet mit dem Schlüsselwort END
.Deklarationen und Anweisungen innerhalb des Funktionsrumpfs müssen mit einem Semikolon (‘;
’) abgeschlossen werden.