FirebirdSQL logo

Un package est un groupe de procédures et de fonctions qui représentent un seul objet de base de données.

Les packages Firebird se composent de deux parties : l’en-tête (mot-clé PACKAGE) et le corps (mot-clé PACKAGE BODY). Cette séparation est très similaire aux modules Delphi, l’en-tête correspond à la partie interface, et le corps à la partie implémentation.

Il faut d’abord créer un en-tête CREATE PACKAGE, puis un corps. (CREATE PACKAGE BODY).

CREATE PACKAGE

affectation

Création d’un en-tête de package.

Disponible en

DSQL

Syntaxe
CREATE PACKAGE package_name
[<rights clause>]
AS
BEGIN
  [<package_item> ...]
END

<rights clause> ::=
  SQL SECURITY {DEFINER | INVOKER}

<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>)]

<in_params> ::= <inparam> [, <inparam> ...]

<inparam> ::= <param_decl> [{= | DEFAULT} <value>]

<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.
Table 1. Paramètres de la fonction`CREATE PACKAGE`
Paramètre Description

package_name

Le nom du package, qui peut comporter jusqu’à 63 caractères.

function_decl

Déclaration de fonction.

procedure_decl

Déclaration 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.

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.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 crée un nouvel en-tête de paquetage. Le nom du paquetage doit être unique parmi tous les noms de paquetage.

Les procédures et les fonctions déclarées dans l’en-tête du paquet sont disponibles en dehors du corps du paquet via l’identifiant complet du nom de la procédure et de la fonction (package_name.procedure_name et package_name.function_name). Les procédures et les 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 de procédures et de fonctions déclarés dans l’en-tête du paquet doivent être uniques parmi les noms de procédures et de fonctions déclarés 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.