Créer et gérer des packages
Vous pouvez créer et gérer des packages PL/SQL.
Voir aussi : "Tutoriel : Déclaration de variables et de constantes dans un sous-programme", qui montre comment modifier le corps d'un paquetage
À propos de la structure de paquetage
Un paquet a toujours une spécification et a généralement un corps. La spécification définit le package lui-même et est une interface de programme d'application (API). Le corps définit les interrogations des curseurs déclarés et le code des sous-programmes déclarés dans la spécification du package.
La spécification de paquetage définit le paquetage, en déclarant les types, les variables, les constantes, les exceptions, les curseurs déclarés et les sous-programmes qui peuvent être référencés en dehors du paquetage. Une spécification d'ensemble est une interface de programme d'application (API) : Elle contient toutes les informations dont les programmes clients ont besoin pour appeler ses sous-programmes, mais aucune information sur leur mise en oeuvre.
Le corps du package définit les interrogations pour les curseurs déclarés, ainsi que le code des sous-programmes, qui sont déclarés dans la spécification du package (par conséquent, un package ne contenant ni curseurs déclarés ni sous-programmes n'a pas besoin de corps). Le corps du package peut également définir des sous-programmes locaux, qui ne sont pas déclarés dans la spécification et ne peuvent être appelés que par d'autres sous-programmes du package. Le contenu du corps du package est masqué dans les programmes client. Vous pouvez modifier le corps du package sans invalider les applications qui l'appellent.
Voir aussi :
-
Informations de référence sur le langage PL/SQL pour Oracle Database pour plus d'informations sur la spécification de l'ensemble
-
Informations de référence sur le langage PL/SQL pour Oracle Database pour plus d'informations sur le corps de l'ensemble
Tutoriel : Création d'une spécification de package
Ce tutoriel explique comment utiliser l'outil Create Package pour créer une spécification pour un package nommé EMP_EVAL, qui apparaît dans de nombreux tutoriels et exemples de ce document.
Pour créer une spécification de PACKAGE, utilisez l'outil SQL Developer CREATE PACKAGE ou l'instruction LDD CREATE PACKAGE.
Étapes de création d'une spécification de package à l'aide de l'outil Create Package :
-
Dans le cadre Connexions, développez hr_conn.
-
Dans la liste des types d'objet de schéma, cliquez avec le bouton droit de la souris sur Ensembles.
-
Dans la liste des choix, cliquez sur Nouveau paquetage.
La fenêtre Create Package s'ouvre. Le champ Schema a la valeur HR, le champ Name a la valeur par défaut PACKAGE1 et la case Add New Source In Lowercase est désélectionnée.
-
Pour Schema, acceptez la valeur par défaut HR.
-
Pour Name, remplacez la valeur PACKAGE1 par
EMP_EVAL. -
Cliquez sur OK.
Le volet EMP_EVAL s'ouvre et affiche l'instruction CREATE PACKAGE qui a créé le PACKAGE :
CREATE OR REPLACE PACKAGE emp_eval AS /* TODO enter package declarations (types, exceptions, methods etc) here */ END emp_eval;Le titre du volet est en italique, ce qui indique que le package n'est pas enregistré dans la base de données.
-
(Facultatif) Dans l'instruction CREATE PACKAGE, remplacez le commentaire par des déclarations.
Si vous ne faites pas cette étape maintenant, vous pouvez le faire plus tard, comme dans "Tutoriel : Modification d'une spécification de paquetage".
-
Dans le menu Fichier, sélectionnez Enregistrer.
Oracle Database compile l'ensemble et l'enregistre. Le titre du volet EMP_EVAL n'est plus en italique.
Voir aussi : Informations de référence sur le langage PL/SQL pour Oracle Database pour plus d'informations sur l'énoncé CREATE PACKAGE (pour la spécification de l'ensemble)
Tutoriel : Modifier une spécification de package
Ce tutoriel explique comment utiliser l'outil Edit pour modifier la spécification du package EMP_EVAL, qui apparaît dans de nombreux tutoriels et exemples de ce document. Plus précisément, le tutoriel explique comment ajouter des déclarations pour une procédure, EVAL_DEPARTMENT, et une fonction, CALCULATE_SCORE.
Pour modifier une spécification de PACKAGE, utilisez l'outil Edit de SQL Developer ou l'instruction LDD CREATE PACKAGE avec la clause OR REPLACE.
Étapes de modification de la spécification de l'ensemble EMP_EVAL à l'aide de l'outil de modification :
-
Dans le cadre Connexions, développez hr_conn.
-
Dans la liste des types d'objet de schéma, développez Ensembles.
-
Dans la liste des ensembles, cliquez avec le bouton droit de la souris sur EMP_EVAL.
-
Dans la liste des choix, cliquez sur Modifier.
Le volet EMP_EVAL s'ouvre et affiche l'instruction CREATE PACKAGE qui a créé le PACKAGE :
CREATE OR REPLACE PACKAGE emp_eval AS /* TODO enter package declarations (types, exceptions, methods etc) here */ END emp_eval;Le titre du volet n'est pas en italique, ce qui indique que le package est enregistré dans la base de données.
-
Dans le volet EMP_EVAL, remplacez le commentaire par le code suivant :
PROCEDURE eval_department ( dept_id IN NUMBER ); FUNCTION calculate_score ( evaluation_id IN NUMBER , performance_id IN NUMBER) RETURN NUMBER;Le titre du volet EMP_EVAL passe à la police en italique, ce qui indique que les modifications n'ont pas été enregistrées dans la base de données.
-
Cliquez sur l'icône Compiler.
La spécification de package modifiée est compilée et enregistrée dans la base de données. Le titre du volet EMP_EVAL n'est plus en italique.
Voir aussi : Informations de référence sur le langage PL/SQL pour Oracle Database pour plus d'informations sur l'énoncé CREATE PACKAGE avec la clause OR REPLACE
Tutoriel : Créer un corps de package
Ce tutoriel explique comment utiliser l'outil Create Body pour créer un corps pour le package EMP_EVAL, qui apparaît dans de nombreux exemples et tutoriels de ce document.
Pour créer un corps de PACKAGE, utilisez l'outil CREATE BODY de SQL Developer ou l'instruction LDD CREATE PACKAGE BODY.
Étapes de création d'un corps pour l'ensemble EMP_EVAL à l'aide de l'outil Create Body :
-
Dans le cadre Connexions, développez hr_conn.
-
Dans la liste des types d'objet de schéma, développez Ensembles.
-
Dans la liste des ensembles, cliquez avec le bouton droit de la souris sur EMP_EVAL.
-
Dans la liste des choix, cliquez sur Créer un corps.
Le volet EMP_EVAL Body apparaît et affiche le code généré automatiquement pour le corps du package :
CREATE OR REPLACE PACKAGE BODY EMP_EVAL AS PROCEDURE eval_department(dept_id IN NUMBER) AS BEGIN -- TODO implementation required for PROCEDURE EMP_EVAL.eval_department NULL; END eval_department; FUNCTION calculate_score ( evaluation_id IN NUMBER , performance_id IN NUMBER) RETURN NUMBER AS BEGIN -- TODO implementation required for FUNCTION EMP_EVAL.calculate_score RETURN NULL; END calculate_score; END EMP_EVAL;Le titre du volet est en italique, ce qui indique que le code n'est pas enregistré dans la base de données.
-
(Facultatif) Dans l'instruction CREATE PACKAGE BODY :
-
Remplacez les commentaires par des instructions exécutables.
-
(Facultatif) Dans la partie exécutable de la procédure, supprimez NULL ou remplacez-la par une instruction exécutable.
-
(Facultatif) Dans la partie exécutable de la fonction, remplacez NULL par une autre expression.
Si vous ne terminez pas cette étape maintenant, vous pouvez le faire plus tard, comme dans "Tutoriel : Déclaration de variables et de constantes dans un sous-programme".
-
-
Cliquez sur l'icône Compiler.
Le corps du package modifié est compilé et enregistré dans la base de données. Le titre du volet Corps EMP_EVAL n'est plus en italique.
Voir aussi : Informations de référence sur le langage PL/SQL pour Oracle Database pour plus d'informations sur l'énoncé CREATE PACKAGE BODY (pour le corps de l'ensemble)
Supprimer un package
Pour supprimer un PACKAGE (spécification et corps), utilisez le cadre SQL Developer Connections et l'outil DROP, ou l'instruction LDD DROP PACKAGE.
Attention : Ne supprimez pas l'ensemble EMP_EVAL. Vous en avez besoin pour les tutoriels ultérieurs. Si vous souhaitez vous entraîner à supprimer des packages, créez-en des simples, puis supprimez-les.
Etapes de suppression d'un package à l'aide de l'outil Drop :
-
Dans le cadre Connexions, développez hr_conn.
-
Dans la liste des types d'objet de schéma, développez Ensembles.
Une liste de packages s'affiche.
-
Dans la liste des packages, cliquez avec le bouton droit de la souris sur le nom du package à supprimer.
-
Dans la liste des choix, cliquez sur Supprimer l'ensemble.
-
Dans la fenêtre Déposer, cliquez sur Appliquer.
-
Dans la fenêtre de confirmation, cliquez sur OK.
Voir aussi : Informations de référence sur le langage PL/SQL pour Oracle Database pour plus d'informations sur l'énoncé DROP PACKAGE