Création et gestion 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 indique comment modifier le corps d'un package

A propos de la structure des packages

Les packages comportent toujours une spécification et disposent habituellement d'un corps. La spécification définit le package lui-même et est une API (Application Program Interface). Le corps définit les requêtes pour les curseurs déclarés et le code pour les sous-programmes déclarés dans la spécification du package.

La spécification du pack définit le package en déclarant les types, variables, constantes, exceptions, curseurs déclarés et sous-programmes pouvant être référencés depuis l'extérieur du package. Une spécification de package est une API (Application Program Interface) : elle contient toutes les informations dont les programmes client ont besoin pour appeler ses sous-programmes, mais aucune information sur leur implémentation.

Le corps du paquet définit les requêtes pour les curseurs déclarés, ainsi que le Code pour les sous-programmes déclarés dans la spécification du paquet (par conséquent, un package sans curseurs ni sous-programmes déclarés ne nécessite pas 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 peuvent être appelés uniquement par d'autres sous-programmes du package. Le contenu du corps du package est masqué vis-à-vis des programmes client. Il peut être modifié sans invalider les applications faisant appel au package.

Voir aussi :

Tutoriel : Création d'une spécification de package

Ce tutoriel présente l'utilisation de l'outil Créer le 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 des packages, utilisez l'outil SQL Developer Créer un PACKAGE ou l'instruction DDL CREATE PACKAGE.

Etapes de création d'une spécification de package à l'aide de l'outil Créer un package :

  1. Dans le cadre Connexions, développez hr_conn.

  2. Dans la liste des types d'objet de schéma, cliquez avec le bouton droit de la souris sur Packages.

  3. Dans la liste des options, cliquez sur Nouveau package.

    La fenêtre Créer un package s'ouvre. Le champ Schéma présente la valeur HR, le champ Nom a la valeur par défaut PACKAGE1 et la case Ajouter une nouvelle source en minuscules est désélectionnée.

  4. Pour Schéma, acceptez la valeur par défaut HR.

  5. Pour Name, remplacez la valeur PACKAGE1 par EMP_EVAL.

  6. Cliquez ensuite sur OK.

    Le panneau EMP_EVAL apparaît et affiche l'instruction CREATE PACKAGE ayant 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 panneau apparaît en italique, afin d'indiquer que le package n'est pas enregistré en base de données.

  7. (Facultatif) Dans l'instruction CREATE PACKAGE, remplacez le commentaire avec des déclarations.

    Si vous n'effectuez pas cette étape maintenant, vous pouvez l'exécuter ultérieurement, comme indiqué à la rubrique "Tutoriel : Modification d'une spécification de package".

  8. Dans le menu Fichier, sélectionnez Enregistrer.

    Oracle Database compile et enregistre le package. Le titre du panneau EMP_EVAL n'apparaît plus en italique.

Voir aussi : Référence du langage PL/SQL d'Oracle Database pour plus d'informations sur l'instruction CREATE PACKAGE (pour la spécification du PACKAGE)

Tutoriel : Modification d'une spécification de package

Ce tutoriel montre comment utiliser l'outil Modifier pour modifier la spécification du package EMP_EVAL, qui apparaît dans de nombreux tutoriels et exemples dans ce document. Il illustre en particulier l'ajout de déclarations à une procédure nommée EVAL_DEPARTMENT et à une fonction nommée CALCULATE_SCORE.

Pour modifier la spécification d'un PACKAGE, utilisez l'outil SQL Developer Modifier ou l'instruction DDL CREATE PACKAGE avec la clause OR REPLACE.

Pour modifier la spécification de package EMP_EVAL à l'aide de l'outil Modifier, procédez comme suit :

  1. Dans le cadre Connexions, développez hr_conn.

  2. Dans la liste des types d'objet de schéma, développez Packages.

  3. Dans la liste des packages, cliquez avec le bouton droit de la souris sur EMP_EVAL.

  4. Dans la liste des choix, cliquez sur Modifier.

    Le panneau EMP_EVAL apparaît et affiche l'instruction CREATE PACKAGE ayant 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 panneau n'apparaît pas en italique, ce qui signifie que le package est enregistré en base de données.

  5. Dans le panneau EMP_EVAL, remplacez le comment 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 en italique, ce qui indique que les modifications n'ont pas été enregistrées dans la base de données.

  6. 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 panneau EMP_EVAL n'apparaît plus en italique.

Voir aussi : Référence de langage PL/SQL Oracle Database pour plus d'informations sur l'instruction CREATE PACKAGE avec la clause OR REPLACE

Tutoriel : Création d'un corps de package

Ce tutoriel montre comment utiliser l'outil Créer un corps pour créer un corps pour le package EMP_EVAL, qui apparaît dans de nombreux exemples et tutoriels dans ce document.

Pour créer un Corps de PACKAGE, utilisez l'outil SQL Developer Créer un Corps ou l'instruction DDL CREATE PACKAGE BODY.

Etapes de création d'un corps pour le package EMP_EVAL à l'aide de l'outil Créer un corps :

  1. Dans le cadre Connexions, développez hr_conn.

  2. Dans la liste des types d'objet de schéma, développez Packages.

  3. Dans la liste des packages, cliquez avec le bouton droit de la souris sur EMP_EVAL.

  4. Dans la liste des choix, cliquez sur Créer un corps.

    Le panneau Corps EMP_EVAL apparaît avec 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 panneau apparaît en italique, ce qui indique que le code n'est pas enregistré dans la base de données.

  5. (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 la valeur NULL ou remplacez-la par une instruction exécutable.

    • (Facultatif) Dans la partie exécutable de cette fonction, supprimez l'expression NULL ou remplacez la valeur par une autre expression.

    Si vous ne complétez pas cette étape maintenant, vous pouvez l'exécuter ultérieurement, comme indiqué à la rubrique "Tutoriel : Déclaration de variables et constantes dans un sous-programme".

  6. Cliquez sur l'icône Compiler.

    Le corps de package modifié est compilé et enregistré dans la base de données. Le titre du panneau Corps EMP_EVAL n'apparaît plus en italique.

Voir aussi : Référence de langage Oracle Database PL/SQL pour plus d'informations sur l'instruction CREATE PACKAGE BODY (pour le corps du PACKAGE)

Suppression d'un package

To drop a package (both specification and body), use either the SQL Developer Connections frame and Drop tool, or the DDL statement DROP PACKAGE.

Attention : ne supprimez pas le package EMP_EVAL ; vous en aurez besoin pour des tutoriels ultérieurs. Pour pratiquer la suppression de packages, créez des packages simples et supprimez-les.

Procédure de suppression d'un package à l'aide de l'outil Supprimer :

  1. Dans le cadre Connexions, développez hr_conn.

  2. Dans la liste des types d'objet de schéma, développez Packages.

    La liste des packages apparaît.

  3. Dans la liste des packages, cliquez sur le nom du package à supprimer avec le bouton droit de la souris.

  4. Dans la liste des choix, cliquez sur Supprimer le package.

  5. Dans la fenêtre Déposer, cliquez sur Appliquer.

  6. Dans la fenêtre de validation, cliquez sur OK.

Voir aussi : Référence du langage PL/SQL d'Oracle Database pour plus d'informations sur l'instruction DROP PACKAGE