CREATE PACKAGE BODY
Création du corps du paquet.
DSQL
CREATE PACKAGE BODY package_name AS BEGIN [<package_item> ...] [<package_body_item> ...] END <package_item> ::= <function_decl>; | <procedure_decl>; <function_decl> ::= FUNCTION func_name [(<in_params>)] RETURNS <type> [NOT NULL] [COLLATE collation] [DETERMINISTIC] <procedure_decl> ::= PROCEDURE proc_name [(<in_params>)] [RETURNS (<out_params>)] <package_body_item> ::= <function_impl> | <procedure_impl> <function_impl> ::= FUNCTION func_name [(<in_impl_params>)] RETURNS <type> [NOT NULL] [COLLATE collation] [DETERMINISTIC] <routine-body> <procedure_impl> ::= PROCEDURE proc_name [(<in_impl_params>)] [RETURNS (<out_params>)] <routine-body> <in_params> ::= <inparam> [, <inparam> ...] <inparam> ::= <param_decl> [{= | DEFAULT} <value>] <in_impl_params> ::= <param_decl> [, <param_decl> ...] <value> ::= {literal | NULL | context_var} <out_params> ::= <outparam> [, <outparam> ...] <outparam> ::= <param_decl> <param_decl> ::= paramname <type> [NOT NULL] [COLLATE collation] <type> ::= <datatype> | [TYPE OF] domain_name | TYPE OF COLUMN rel.col <datatype> ::= <scalar_datatype> | <blob_datatype> <scalar_datatype> ::= Voir Syntaxe des types de données scalaires. <blob_datatype> ::= Voir Syntaxe du type de données BLOB. <routine-body> ::= <psql-routine-body> | <external-routine-spec> <psql-module-body> ::= Voir. Syntaxe du corps du module <external-routine-spec> ::= <external-routine-reference> [AS <extbody>] <external-routine-reference> ::= EXTERNAL NAME <extname> ENGINE <engine> <extname> ::= '<module-name>!<routine-name>[!<misc-info>]'
Paramètre | Description |
---|---|
package_name |
Le nom du paquet, qui peut comporter jusqu’à 63 caractères. |
function_decl |
Déclaration de fonction. |
procedure_decl |
Déclaration de la procédure. |
function_impl |
Mise en œuvre de la fonction. |
procedure_impl |
Mise en œuvre de la procédure. |
proc_name |
Nom de la procédure, pouvant contenir jusqu’à 63 caractères. |
func_name |
Nom de la fonction. Peut contenir jusqu’à 63 caractères. |
inparam |
Description du paramètre d’entrée. |
outparam |
Description du paramètre de sortie. |
subfunc_impl |
Mise en œuvre d’un sous-programme de fonctions. |
subproc_impl |
Mise en œuvre d’une sous-procédure. |
module-name |
Le nom du module externe dans lequel se trouve la procédure/fonction. |
routine-name |
Nom interne d’une procédure/fonction dans un module externe. |
misc-info |
Informations définies par l’utilisateur à envoyer à une fonction de module externe. |
extbody |
Le corps d’une procédure ou d’une fonction externe. Une chaîne littérale qui peut être utilisée par l’UDR à diverses fins. |
engine |
Nom du moteur pour l’utilisation des fonctions externes. Habituellement, le nom de l’UDR est donné. |
literal |
Un littéral dont le type est compatible avec le paramètre. |
context_var |
Toute variable contextuelle dont le type est compatible avec celui du paramètre. |
paramname |
Nom du paramètre d’entrée ou de sortie de la procédure/fonction. Peut contenir jusqu’à 63 caractères. Le nom du paramètre doit être unique parmi les paramètres d’entrée et de sortie de la procédure/fonction, ainsi que ses variables locales. |
datatype |
Type de données SQL. |
collation |
Ordre de tri. |
domain_name |
Nom de domaine. |
rel |
Le nom d’une table ou d’une vue. |
col |
Le nom de la colonne de la table ou de la vue. |
L’instruction CREATE PACKAGE BODY
crée un nouveau corps de paquetage. Le corps de paquetage ne peut être créé qu’après que l’en-tête de paquetage ait été créé. Si un en-tête de paquetage nommé nom_du_paquetage n’existe pas, une erreur appropriée sera émise.
Toutes les procédures et fonctions déclarées dans l’en-tête du paquet doivent être implémentées dans le corps du paquet. De plus, toutes les procédures et fonctions déclarées dans le corps du paquet doivent également être implémentées. Les procédures et fonctions définies dans le corps du paquet, mais non déclarées dans l’en-tête du paquet, ne sont pas visibles en dehors du corps du paquet.
Les noms des procédures et des fonctions déclarées dans le corps du paquet doivent être uniques parmi les noms des procédures et des fonctions déclarées dans l’en-tête et le corps du paquet.
Note
|
Il est préférable que les noms des procédures stockées et des fonctions du paquetage ne se chevauchent pas avec les noms des procédures stockées et des fonctions de l’espace de noms global, bien que cela soit acceptable. Le fait est que vous ne pouvez actuellement pas appeler une fonction/procédure de l’espace de noms global à l’intérieur d’un paquetage si une fonction/procédure du même nom est déclarée dans le paquetage. |
Tous les sous-programmes doivent être implémentés dans le corps du paquet, avec la même signature que celle déclarée dans l’en-tête et au début du corps du paquet.
Les valeurs par défaut des paramètres de procédure qui sont spécifiés dans <package_item>
ne peuvent pas être remplacées. Cela signifie qu’ils ne peuvent être dans <package_body_item>
que pour les procédures privées qui n’ont pas été déclarées.
Note
|
Les déclarations UDF (fonction externe |