FirebirdSQL logo

Packages

Un package est un groupe de procédures et de fonctions qui constituent un objet unique de la base de données.

Les paquets 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 correspond à la partie implémentation.

Les avantages des paquets

Les paquets présentent les avantages suivants :

Modularité

Les blocs de code interdépendants sont séparés en modules logiques, comme dans les autres langages de programmation.

Il existe de nombreuses façons de regrouper le code en programmation, comme les espaces de noms, les unités et les classes, ce qui n’est pas possible avec les procédures et les fonctions standard des bases de données.

Simplifier le suivi des dépendances

Les paquets simplifient le mécanisme de suivi des dépendances entre un ensemble de procédures liées, et entre cet ensemble et d’autres procédures, qu’elles soient emballées ou non.

Chaque fois qu’une sous-routine packagée détermine qu’un certain objet de la base de données est utilisé, les informations relatives aux dépendances de cet objet sont enregistrées dans les tables du système Firebird. Ensuite, pour supprimer ou modifier cet objet, vous devez d’abord supprimer ce qui en dépend. Étant donné que les dépendances envers d’autres objets n’existent que pour le corps du paquet, ce corps de paquet peut facilement être supprimé même si un autre objet dépend de ce paquet.

Simplifier la gestion des permissions

Parce que Firebird exécute des sous-programmes avec des permissions d’appel, chaque sous-programme appelant doit recevoir la permission d’utiliser des ressources si ces ressources ne sont pas directement disponibles pour l’appelant. L’utilisation de chaque sous-programme nécessite d’accorder des privilèges d’exécution à ses utilisateurs et/ou rôles.

Les sous-programmes du paquet n’ont pas de privilèges séparés. Les privilèges sont valables pour le paquet dans son ensemble. Les privilèges accordés aux paquets sont valables pour tous les sous-programmes du corps du paquet, y compris les privés, et sont conservés pour l’en-tête du paquet.

Portées privées

Certaines procédures et fonctions peuvent être privées, c’est-à-dire qu’elles ne peuvent être utilisées qu’au sein de la définition du paquet.

Tous les langages de programmation ont une notion de portée de sous-programme, qui n’est pas possible sans une certaine forme de regroupement. Les packages Firebird sont similaires aux modules Delphi à cet égard. Si un sous-programme n’est pas déclaré dans l’en-tête du package (interface), mais est implémenté dans le corps (implémentation), alors le sous-programme devient privé. Un sous-programme privé ne peut être appelé que depuis son package.

Création d’un paquet

Pour plus d’informations sur la création de paquets, reportez-vous àCREATE PACKAGE, CREATE PACKAGE BODY.

Modification du paquet

Pour plus d’informations sur la modification d’un en-tête ou d’un corps de paquet existant, reportez-vous à la rubrique ALTER PACKAGE,CREATE OR ALTER PACKAGE,RECREATE PACKAGE,RECREATE PACKAGE BODY.