CREATE PACKAGE
Paket-Header deklarieren
DSQL
CREATE PACKAGE package_name [SQL SECURITY {INVOKER | DEFINER}] AS BEGIN [ <package_item> ... ] END <package_item> ::= <function_decl>; | <procedure_decl>; <function_decl> ::= FUNCTION funcname [ ( [ <in_params> ] ) ] RETURNS <domain_or_non_array_type> [COLLATE collation] [DETERMINISTIC] <procedure_decl> ::= PROCEDURE procname [ ( [ <in_params> ] ) ] [RETURNS (<out_params>)] <in_params> ::= <inparam> [, <inparam> ... ] <inparam> ::= <param_decl> [ { = | DEFAULT } <value> ] <out_params> ::= <outparam> [, <outparam> ...] <outparam> ::= <param_decl> <value> ::= { literal | NULL | context_var } <param-decl> ::= paramname <domain_or_non_array_type> [NOT NULL] [COLLATE collation] <domain_or_non_array_type> ::= !! Siehe auch Skalardatentypen-Syntax !!
Parameter | Beschreibung |
---|---|
package_name |
Paketnamen.Die maximale Länge beträgt 63 Zeichen.Der Paketname muss unter allen Paketnamen eindeutig sein. |
function_decl |
Funktionsdeklaration |
procedure_decl |
Prozedurdeklaration |
func_name |
Funktionsname.Die maximale Länge beträgt 63 Zeichen.Der Funktionsname muss innerhalb des Pakets eindeutig sein. |
proc_name |
Prozedurname.Die maximale Länge beträgt 63 Zeichen.Der Funktionsname muss innerhalb des Pakets eindeutig sein. |
collation |
Sortierreihenfolge |
inparam |
Deklaration der Eingabeparameter |
outparam |
Deklaration der Ausgabeparameter |
literal |
Ein Literalwert, der mit dem Datentyp des Parameters zuweisungskompatibel ist |
context_var |
Jede Kontextvariable, die mit dem Datentyp des Parameters zuweisungskompatibel ist |
paramname |
Der Name eines Eingabeparameters einer Prozedur oder Funktion oder eines Ausgabeparameters einer Prozedur.Er kann aus bis zu 63 Zeichen bestehen.Der Name des Parameters muss unter den Eingabe- und Ausgabeparametern der Prozedur oder Funktion eindeutig sein. |
Die Anweisung CREATE PACKAGE
erstellt einen neuen Paket-Header.Im Paketheader deklarierte Routinen (Prozeduren und Funktionen) sind außerhalb des Pakets unter Verwendung des vollständigen Bezeichners (package_name.proc_name oder package_name.func_name) verfügbar.Routinen, die nur im Paketrumpf definiert sind – aber nicht im Paketkopf – sind außerhalb des Pakets nicht sichtbar.
Note
|
Paketprozedur- und Funktionsnamen können globale Routinen überschatten
Wenn ein Paketheader oder Paketrumpf eine Prozedur oder Funktion mit demselben Namen wie eine gespeicherte Prozedur oder Funktion im globalen Namespace deklariert, ist es nicht möglich, diese globale Prozedur oder Funktion aus dem Paketrumpf aufzurufen.In diesem Fall wird immer die Prozedur oder Funktion des Pakets aufgerufen. Aus diesem Grund wird empfohlen, dass sich die Namen von gespeicherten Prozeduren und Funktionen in Paketen nicht mit Namen von gespeicherten Prozeduren und Funktionen im globalen Namespace überschneiden. |