CREATE PACKAGE BODY
Erstellen des Paketrumpfes
DSQL
CREATE PACKAGE BODY name AS BEGIN [ <package_item> ... ] [ <package_body_item> ... ] END <package_item> ::= !! Siehe auchCREATE PACKAGE
-Syntax !! <package_body_item> ::= <function_impl> | <procedure_impl> <function_impl> ::= FUNCTION funcname [ ( [ <in_params> ] ) ] RETURNS <domain_or_non_array_type> [COLLATE collation] [DETERMINISTIC] <module-body> <procedure_impl> ::= PROCEDURE procname [ ( [ <in_params> ] ) ] [RETURNS (<out_params>)] <module-body> <module-body> ::= !! Siehe auch Syntax des Modul-Bodys !! <in_params> ::= !! Siehe auchCREATE PACKAGE
-Syntax !! !! Siehe auch die Regeln weiter unten !! <out_params> ::= !! Siehe auchCREATE PACKAGE
-Syntax !! <domain_or_non_array_type> ::= !! Siehe auch Syntax der Skalardatentypen !!
Parameter | Beschreibung |
---|---|
package_name |
Paketnamen.Die maximale Länge beträgt 63 Zeichen.Der Paketname muss unter allen Paketnamen eindeutig sein. |
function_impl |
Funktionsimplementierung.Im Wesentlichen eine |
procedure_impl |
VerfahrensimplementierungIm Wesentlichen eine |
func_name |
Funktionsname.Die maximale Länge beträgt 63 Zeichen.Der Funktionsname muss innerhalb des Pakets eindeutig sein. |
collation |
Sortierreihenfolge |
proc_name |
Prozedurname.Die maximale Länge beträgt 63 Zeichen.Der Funktionsname muss innerhalb des Pakets eindeutig sein. |
Die Anweisung CREATE PACKAGE BODY
erstellt einen neuen Paketkörper.Der Paketkörper kann erst erstellt werden, nachdem der Paketkopf erstellt wurde.Wenn kein Paketheader mit dem Namen package_name vorhanden ist, wird ein entsprechender Fehler ausgegeben.
Alle im Paketkopf deklarierten Prozeduren und Funktionen müssen im Paketrumpf implementiert werden.Zusätzliche Prozeduren und Funktionen dürfen nur im Paketrumpf definiert und implementiert werden.Prozeduren und Funktionen, die im Paketrumpf definiert, aber nicht im Paketkopf definiert sind, sind außerhalb des Paketrumpfs nicht sichtbar.
Die Namen von Prozeduren und Funktionen, die im Paketrumpf definiert sind, müssen unter den Namen von Prozeduren und Funktionen, die im Paketkopf definiert und im Paketrumpf implementiert sind, eindeutig sein.
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. |
-
Im Paketrumpf müssen alle Prozeduren und Funktionen mit derselben Signatur implementiert werden, die im Header und am Anfang des Paketrumpfs deklariert ist
-
Die Standardwerte für Prozedur- oder Funktionsparameter können nicht überschrieben werden (wie im Paketkopf oder in <package_item> angegeben).Dies bedeutet, dass Standardwerte nur in <package_body_item> für Prozeduren oder Funktionen definiert werden können, die nicht im Paketkopf oder früher im Paketrumpf definiert wurden.
Note
|
UDF-Deklarationen ( |