Créer et gérer des sous-programmes autonomes

Vous pouvez créer et gérer des sous-programmes PL/SQL autonomes.

Note : Pour effectuer les tutoriels de ce document, vous devez être connecté à Oracle Database en tant qu'utilisateur HR à partir de SQL Developer.

À propos de la structure des sous-programmes

Un sous-programme suit la structure des blocs PL/SQL, c'est-à-dire qu'il comporte les éléments suivants :

Les commentaires peuvent apparaître n'importe où dans le code PL/SQL. Le compilateur PL/SQL les ignore. L'ajout de commentaires à votre programme favorise la lisibilité et facilite la compréhension. Un commentaire sur une seule ligne commence par un double trait d'union (--) et s'étend jusqu'à la fin de la ligne. Un commentaire à lignes multiples commence par une barre oblique et un astérisque (/*) et se termine par un astérisque et une barre oblique (*/).

La structure d'une procédure est la suivante :

PROCEDURE name [ ( parameter_list ) ]
{ IS | AS }
  [ declarative_part ]
BEGIN  -- executable part begins
  statement; [ statement; ]...
[ EXCEPTION -- executable part ends, exception-handling part begins]
  exception_handler; [ exception_handler; ]... ]
END; /* exception-handling part ends if it exists;
        otherwise, executable part ends */

La structure d'une fonction est similaire à celle d'une procédure, sauf qu'elle inclut une clause RETURN et au moins un énoncé RETURN (et certaines clauses facultatives qui dépassent le champ d'application du présent document) :

FUNCTION name [ ( parameter_list ) ] RETURN data_type [ clauses ]
{ IS | AS }
  [ declarative_part ]
BEGIN  -- executable part begins
  -- at least one statement must be a RETURN statement
  statement; [ statement; ]...
[ EXCEPTION -- executable part ends, exception-handling part begins]
  exception_handler; [ exception_handler; ]... ]
END; /* exception-handling part ends if it exists;
        otherwise, executable part ends */

Le code qui commence par PROCÉDURE ou FONCTION et se termine avant IS ou AS est la signature du sous-programme. Les parties déclaratives, exécutables et de traitement des exceptions constituent le corps du sous-programme. La syntaxe du programme de traitement des exceptions est dans "À propos des programmes de traitement des exceptions et des exceptions".

Voir aussi : Informations de référence sur le langage PL/SQL pour Oracle Database pour plus d'informations sur les parties de sous-programme

Tutoriel : Créer une procédure autonome

Ce tutoriel explique comment utiliser l'outil Create Procedure pour créer une procédure autonome nommée ADD_EVALUATION qui ajoute une ligne à la table EVALUATIONS.

La table EVALUATIONS a été créée dans Exemple 4-1.

Pour créer une procédure autonome, utilisez l'outil CREATE PROCEDURE de SQL Developer ou l'instruction LDD CREATE PROCEDURE.

Etapes de création d'une procédure autonome à l'aide de l'outil Create Procedure :

  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 Procédures.

  3. Dans la liste des choix, cliquez sur Nouvelle procédure.

    La fenêtre Create Procedure s'ouvre.

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

  5. Pour le nom, remplacez PROCEDURE1 par ADD_EVALUATION.

  6. Cliquez sur l'icône Ajouter un paramètre.

    Une ligne apparaît sous les en-têtes de colonne. Ses champs ont les valeurs par défaut suivantes : Name, PARAM1; Mode, IN; No Copy, désélectionné; Data Type, VARCHAR2; Default Value, vide.

  7. Pour Name, remplacez PARAM1 par EVALUATION_ID.

  8. Dans le champ Mode, acceptez la valeur par défaut IN.

  9. Pour le type de données, sélectionnez NUMBER dans le menu.

  10. Laissez la valeur par défaut vide.

  11. Ajoutez un deuxième paramètre en répétant les étapes 6 à 10 avec le nom EMPLOYEE_ID et le type de données NUMBER.

  12. Ajoutez un troisième paramètre en répétant les étapes 6 à 10 avec le nom EVALUATION_DATE et le type de données DATE.

  13. Ajoutez un quatrième paramètre en répétant les étapes 6 à 10 avec le nom JOB_ID et le type de données VARCHAR2.

  14. Ajoutez un cinquième paramètre en répétant les étapes 6 à 10 avec le nom MANAGER_ID et le type de données NUMBER.

  15. Ajoutez un sixième paramètre en répétant les étapes 6 à 10 avec le nom DEPARTMENT_ID et le type de données NUMBER.

  16. Ajoutez un septième paramètre en répétant les étapes 6 à 10 avec le nom TOTAL_SCORE et le type de données NUMBER.

  17. Cliquez sur OK.

    CREATE OR REPLACE PROCEDURE ADD_EVALUATION
    (
      EVALUATION_ID IN NUMBER
    , EMPLOYEE_ID IN NUMBER
    , EVALUATION_DATE IN DATE
    , JOB_ID IN VARCHAR2
    , MANAGER_ID IN NUMBER
    , DEPARTMENT_ID IN NUMBER
    , TOTAL_SCORE IN NUMBER
    ) AS
    
    BEGIN
    
      NULL;
    
    END ADD_EVALUATION;
    

    Le titre du volet ADD_EVALUATION est en italique, ce qui indique que la procédure n'est pas encore enregistrée dans la base de données.

    Etant donné que la partie d'exécution de la procédure contient uniquement l'instruction NULL, la procédure ne fait rien.

  18. Remplacez l'instruction NULL par cette instruction :

    INSERT INTO EVALUATIONS (
      evaluation_id,
      employee_id,
      evaluation_date,
      job_id,
      manager_id,
      department_id,
      total_score
    )
    VALUES (
      ADD_EVALUATION.evaluation_id,
      ADD_EVALUATION.employee_id,
      ADD_EVALUATION.evaluation_date,
      ADD_EVALUATION.job_id,
      ADD_EVALUATION.manager_id,
      ADD_EVALUATION.department_id,
      ADD_EVALUATION.total_score
    );
    

    (L'attribution des noms de paramètre au nom de la procédure garantit qu'ils ne sont pas confondus avec les colonnes portant les mêmes noms.)

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

Oracle Database compile la procédure et l'enregistre. Le titre du volet ADD_EVALUATION n'est plus en italique. Le volet Message - Journal contient le message Compiled.

Voir aussi :

Tutoriel : Créer une fonction autonome

Ce tutoriel explique comment utiliser l'outil Créer une fonction pour créer une fonction autonome nommée CALCULATE_SCORE qui comporte trois paramètres et retourne une valeur de type NUMBER.

Pour créer une fonction autonome, utilisez l'outil CREATE FUNCTION de SQL Developer ou l'instruction LDD CREATE FUNCTION.

Étapes de création d'une fonction autonome à l'aide de l'outil Créer une fonction :

  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 Fonctions.

  3. Dans la liste des choix, cliquez sur Nouvelle fonction.

    La fenêtre Create Function s'ouvre.

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

  5. Pour Name, remplacez FUNCTION1 par CALCULATE_SCORE.

  6. Pour Type de retour, sélectionnez NUMBER dans le menu.

  7. Cliquez sur l'icône Ajouter un paramètre.

    Une ligne apparaît sous les en-têtes de colonne. Ses champs ont les valeurs par défaut suivantes : Name, PARAM1; Mode, IN; No Copy, désélectionné; Data Type, VARCHAR2; Default Value, vide.

  8. Pour Name, remplacez PARAM1 par cat.

  9. Dans le champ Mode, acceptez la valeur par défaut IN.

  10. Pour Data Type, acceptez la valeur par défaut, VARCHAR2.

  11. Laissez la valeur par défaut vide.

  12. Ajoutez un deuxième paramètre en répétant les étapes 7 à 11 avec le nom score et le type de données NUMBER.

  13. Ajoutez un troisième paramètre en répétant les étapes 7 à 11 avec le nom weight et le type de données NUMBER.

  14. Cliquez sur OK.

    Le volet CALCULATE_SCORE s'ouvre et affiche l'instruction CREATE FUNCTION qui a créé la fonction :

    CREATE OR REPLACE FUNCTION CALCULATE_SCORE
    (
      CAT IN VARCHAR2
    , SCORE IN NUMBER
    , WEIGHT IN NUMBER
    ) RETURN NUMBER AS
    
    BEGIN
    
      RETURN NULL;
    
    END CALCULATE_SCORE;
    

    Le titre du volet CALCULATE_SCORE est en italique, ce qui indique que la fonction n'est pas encore enregistrée dans la base de données.

    Comme la seule instruction de la partie d'exécution de la fonction est l'instruction RETURN NULL, la fonction ne fait rien.

  15. Remplacez NULL par score * weight.

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

    Oracle Database compile la fonction et l'enregistre. Le titre du volet CALCULATE_SCORE n'est plus en italique. Le volet Message - Journal contient le message Compiled.

Voir aussi :

Modification des sous-programmes autonomes

Pour modifier un sous-programme autonome, utilisez l'outil Edit de SQL Developer ou l'instruction LDD ALTER PROCEDURE ou ALTER FUNCTION.

Etapes pour modifier un sous-programme autonome à l'aide de l'outil Edit :

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

  2. Dans la liste des types d'objet de schéma, développez Fonctions ou Procédures.

    Une liste de fonctions ou de procédures apparaît.

  3. Cliquez sur la fonction ou la procédure à modifier.

    À droite du cadre Connections, un cadre apparaît. Son onglet supérieur contient le nom du sous-programme à modifier. Le volet Code affiche le code qui a créé le sous-programme.

    Le volet Code est en mode écriture. (Cliquer sur l'icône de crayon fait passer le mode du mode écriture au mode lecture seule ou inversement.)

  4. Dans le volet Code, modifiez le code.

    Le titre du volet devient police en italique, ce qui indique que la modification n'est pas encore enregistrée dans la base de données.

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

    Oracle Database compile le sous-programme et l'enregistre. Le titre du volet n'est plus en italique. Le volet Message - Journal contient le message Compiled.

Voir aussi :

Tutoriel : Tester une fonction autonome

Ce tutoriel explique comment utiliser l'outil SQL Developer Run pour tester la fonction autonome CALCULATE_SCORE.

Etapes pour tester la fonction CALCULATE_SCORE à l'aide de l'outil Run :

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

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

  3. Dans la liste des fonctions, cliquez avec le bouton droit de la souris sur CALCULATE_SCORE.

  4. Dans la liste des choix, cliquez sur Exécuter.

    La fenêtre Run PL/SQL s'ouvre. Son bloc PL/SQL comprend le code suivant :

     v_Return := CALCULATE_SCORE (
         CAT => CAT,
         SCORE => SCORE,
         WEIGHT => WEIGHT
       );
    
  5. Remplacez les valeurs SCORE et WEIGHT par 8 et 0.2, respectivement :

     v_Return := CALCULATE_SCORE (
         CAT => CAT,
         SCORE => 8,
         WEIGHT => 0.2
       );
    
  6. Cliquez sur OK.

    Dans le volet Code, la fenêtre Running s'ouvre et affiche le résultat suivant :

     Connecting to the database hr_conn.
     Process exited.
     Disconnecting from the database hr_conn.
    

    À droite de l'onglet Running se trouve l'onglet Output Variables.

  7. Cliquez sur l'onglet Variables de sortie.

    Deux cadres apparaissent, Variable et Value, qui contiennent respectivement les valeurs <Return Value> et 1.6.

Voir aussi : Oracle SQL Developer User's Guide pour plus d'informations sur l'utilisation de SQL Developer pour exécuter et déboguer des procédures et des fonctions

Supprimer des sous-programmes autonomes

Pour supprimer un sous-programme autonome, utilisez le cadre SQL Developer Connections et l'outil DROP, ou l'instruction LDD DROP PROCEDURE ou DROP FUNCTION.

Attention : Ne supprimez pas la procédure ADD_EVALUATION ou la fonction CALCULATE_SCORE; vous en avez besoin pour les tutoriels ultérieurs. Si vous souhaitez vous entraîner à supprimer des sous-programmes, créez-en des simples, puis supprimez-les.

Etapes pour supprimer un sous-programme autonome à l'aide de l'outil Drop :

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

  2. Dans la liste des types d'objet de schéma, développez Fonctions ou Procédures.

  3. Dans la liste des fonctions ou des procédures, cliquez avec le bouton droit de la souris sur le nom de la fonction ou de la procédure à supprimer.

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

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

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

Voir aussi :