Créer et gérer des sous-programmes autonomes
Vous pouvez créer et gérer des sous-programmes PL/SQL autonomes.
Remarque : pour effectuer les tutoriels de ce document, vous devez être connecté à Oracle Database en tant qu'utilisateur HR de SQL Developer.
A propos de la structure des sous-programmes
Les sous-programmes respectent la structure de blocs PL/SQL. Ils comportent donc les éléments suivants :
-
Partie déclarative (facultatif)
La partie déclarative contient les déclarations des types, constantes, variables, exceptions, curseurs déclarés et sous-programmes imbriqués. Il s'agit d'éléments locaux du sous-programme qui cessent d'exister à la fin de son exécution.
-
Partie exécutable (obligatoire)
La partie exécutable contient des instructions qui affectent des valeurs, contrôlent l'exécution et manipulent des données.
-
Partie de gestion des exceptions (facultatif)
La partie de traitement d'exceptions contient du code qui gère les exceptions (erreurs d'exécution).
Des commentaires peuvent figurer dans le code PL/SQL. Le compilateur PL/SQL ne les prend pas en compte. L'ajout de commentaires au programme améliore la lisibilité et facilite la compréhension. Un commentaire monoligne commence par un tiret double (--) et continue jusqu'à la fin de la ligne. Les commentaires multilignes commencent par une barre oblique et l'astérisque (/*) et se terminent par un astérisque et une barre oblique (*/).
La structure d'une procédure est :
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, mais elle comprend une clause RETURN et au moins un énoncé RETURN (et quelques clauses facultatives non couvertes par ce 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 PROCEDURE ou FUNCTION et se termine avant IS ou AS correspond à la signature de sous-programme. La partie déclarative, exécutable et la partie du traitement des exceptions constituent le corps du Sous-programme. La syntaxe du gestionnaire d'exceptions se trouve dans la section "A propos des exceptions et des gestionnaires d'exceptions".
Voir aussi : Oracle Database PL/SQL Language Reference, pour plus d'informations sur les parties de sous-programme
Tutoriel : Création d'une procédure autonome
Ce tutoriel présente l'utilisation de l'outil Créer une procédure pour créer une procédure hébergée autonome nommée ADD_EVALUATION qui ajoute une ligne à la table EVALUATIONS.
La table EVALUATIONS a été créée dans l'Example 4-1.
To create a standalone procedure, use either the SQL Developer tool Create Procedure or the DDL statement CREATE PROCEDURE.
Etapes de création d'une procédure autonome avec l'outil Créer une procédure :
-
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 Procédures.
-
Dans la liste des choix, cliquez sur Nouvelle procédure.
La fenêtre Créer une procédure s'ouvre.
-
Pour Schéma, acceptez la valeur par défaut HR.
-
Pour Nom, remplacez PROCEDURE1 par
ADD_EVALUATION. -
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 : Nom, PARAM1 ; Mode, IN ; Aucune copie, désélectionnée ; Type de données, VARCHAR2 ; Valeur par défaut, vide.
-
Dans le paramètre Nom, remplacez PARAM1 par
EVALUATION_ID. -
Pour Le paramètre Mode, acceptez la valeur par défaut IN.
-
Pour Type de données, sélectionnez NUMBER dans le menu.
-
Laissez le champ Valeur par défaut vide.
-
Ajoutez un deuxième paramètre en répétant les étapes 6 à 10, avec le nom
EMPLOYEE_IDet le type de données NUMBER. -
Ajoutez un troisième paramètre en répétant les étapes 6 à 10 avec le nom
EVALUATION_DATEet la DATE du type de données. -
Ajoutez un quatrième paramètre en répétant les étapes 6 à 10, avec le nom
JOB_IDet le type de données VARCHAR2. -
Ajoutez un cinquième paramètre en répétant les étapes 6 à 10, avec le nom
MANAGER_IDet le type de données NUMBER. -
Ajoutez un sixième paramètre en répétant les étapes 6 et 10 avec le nom
DEPARTMENT_IDet le type de données NUMBER. -
Ajoutez un septième paramètre en répétant les étapes 6 à 10, avec le nom
TOTAL_SCOREet le type de données NUMBER. -
Cliquez ensuite 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 panneau ADD_EVALUATION apparaît en italique, afin d'indiquer que la procédure n'est pas encore enregistrée dans la base de données.
Puisque la partie d'exécution de la procédure contient uniquement l'instruction NULL, rien ne se produit.
-
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 );(La qualification des noms de paramètre avec le nom de procédure permet d'éviter leur confusion avec les colonnes portant le même nom.)
-
Dans le menu Fichier, sélectionnez Enregistrer.
Oracle Database compile et enregistre la procédure. Le titre du panneau ADD_EVALUATION n'apparaît plus en italique. Le message Compiled est affiché dans le volet Message - Journal.
Voir aussi :
-
Guide de l'utilisateur Oracle SQL Developer, pour un autre exemple d'utilisation de SQL Developer pour créer une procédure autonome
-
"A propos des instructions LDD (Langage de définition de données)" pour obtenir des informations générales sur l'instruction CREATE PROCEDURE
-
Oracle Database PL/SQL Language Reference, pour plus d'informations sur l'instruction CREATE PROCEDURE
Tutoriel : Création d'une fonction autonome
Ce tutoriel présente l'utilisation de l'outil Créer des fonctions pour créer une fonction autonome nommée CALCULATE_SCORE qui comporte trois paramètres et renvoie une valeur de type NUMBER.
To create a standalone function, use either the SQL Developer tool Create Function or the DDL statement CREATE FUNCTION.
Etapes de création d'une fonction autonome à l'aide de l'outil Créer une fonction :
-
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 Fonctions.
-
Dans la liste des options, cliquez sur Nouvelle fonction.
La fenêtre Créer une fonction s'ouvre.
-
Pour Schéma, acceptez la valeur par défaut HR.
-
Pour Nom, remplacez FUNCTION1 par
CALCULATE_SCORE. -
Pour Type de retour, sélectionnez NUMBER dans le menu.
-
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 : Nom, PARAM1 ; Mode, IN ; Aucune copie, désélectionnée ; Type de données, VARCHAR2 ; Valeur par défaut, vide.
-
Pour Nom, remplacez PARAM1 par
cat. -
Pour Le paramètre Mode, acceptez la valeur par défaut IN.
-
Pour Data Type, acceptez la valeur par défaut, VARCHAR2.
-
Laissez le champ Valeur par défaut vide.
-
Ajoutez un deuxième paramètre en répétant les étapes 7 à 11, avec le nom
scoreet le type de données NUMBER. -
Ajoutez un troisième paramètre en répétant les étapes 7 à 11 avec le nom
weightet la valeur de type de données NUMBER. -
Cliquez ensuite sur OK.
Le panneau CALCULATE_SCORE apparaît et affiche l'instruction CREATE FUNCTION ayant 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 panneau CALCULATE_SCORE apparaît en italique, afin d'indiquer que la fonction n'est pas encore enregistrée dans la base de données.
Puisque la seule instruction dans la partie d'exécution de la fonction est l'instruction RETURN NULL, rien ne se produit.
-
Remplacez NULL par
score * weight. -
Dans le menu Fichier, sélectionnez Enregistrer.
Oracle Database compile et enregistre la fonction. Le titre du panneau CALCULATE_SCORE n'apparaît plus en italique. Le message
Compiledest affiché dans le volet Message - Journal.
Voir aussi :
-
"A propos des instructions LDD (langage de définition de données)" pour obtenir des informations générales sur l'instruction CREATE FUNCTION
-
Manuel Oracle Database PL/SQL Language Reference, pour plus d'informations sur l'instruction CREATE FUNCTION
Modification de sous-programmes autonomes
To change a standalone subprogram, use either the SQL Developer tool Edit or the DDL statement ALTER PROCEDURE or ALTER FUNCTION.
Pour modifier un sous-programme autonome à l'aide de l'outil de modification, procédez comme suit :
-
Dans le cadre Connexions, développez hr_conn.
-
Dans la liste des types d'objet de schéma, développez Fonctions ou Procédures.
La liste des fonctions ou des procédures apparaît.
-
Cliquez sur la fonction ou la procédure à modifier.
Un cadre apparaît dans la partie droite du cadre Connexions. L'onglet supérieur porte le nom du sous-programme à modifier. Le panneau Code affiche le code qui a créé le sous-programme.
Le volet Code est en mode écriture. (Cliquez sur l'icône en forme de crayon pour passer du mode écriture au mode lecture seule ou inversement.)
-
Dans le panneau Code, modifiez le code.
Le titre du panneau apparaît en italique, afin d'indiquer que la modification n'est pas encore enregistrée dans la base de données.
-
Dans le menu Fichier, sélectionnez Enregistrer.
Oracle Database compile et enregistre le sous-programme. Le titre du panneau n'apparaît plus en italique. Le message
Compiledest affiché dans le volet Message - Journal.
Voir aussi :
-
"A propos des instructions LDD (langage de définition de données)" pour obtenir des informations générales sur les instructions ALTER PROCEDURE et ALTER FUNCTION
-
Oracle Database PL/SQL Language Reference, pour plus d'informations sur l'instruction ALTER PROCEDURE
-
Manuel Oracle Database PL/SQL Language Reference, pour plus d'informations sur l'instruction ALTER FUNCTION
Tutoriel : Test d'une fonction autonome
This tutorial shows how to use the SQL Developer tool Run to test the standalone function CALCULATE_SCORE.
Pour tester la fonction CALCULATE_SCORE à l'aide de l'outil Exécuter, procédez comme suit :
-
Dans le cadre Connexions, développez hr_conn.
-
Dans la liste des types d'objet de schéma, développez Fonctions.
-
Dans la liste des fonctions, cliquez avec le bouton droit de la souris sur CALCULATE_SCORE.
-
Dans la liste des choix, cliquez sur Exécuter.
La fenêtre Exécuter PL/SQL apparaît. Le cadre Bloc PL/SQL qu'elle comporte contient le code suivant :
v_Return := CALCULATE_SCORE ( CAT => CAT, SCORE => SCORE, WEIGHT => WEIGHT ); -
Remplacez les valeurs de SCORE et WEIGHT par
8et0.2, respectivement :v_Return := CALCULATE_SCORE ( CAT => CAT, SCORE => 8, WEIGHT => 0.2 ); -
Cliquez ensuite 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.A droite de l'onglet Running se trouve l'onglet Output Variables.
-
Cliquez sur l'onglet Variables de sortie.
Deux cadres apparaissent, Variable et Valeur, qui contiennent respectivement les valeurs <Valeur renvoyée> et 1.6.
Voir aussi : Guide de l'utilisateur Oracle SQL Developer pour plus d'informations sur l'utilisation de SQL Developer pour exécuter et déboguer des procédures et des fonctions.
Suppression de sous-programmes autonomes
Pour supprimer un sous-programme autonome, utilisez soit le cadre de la navigation SQL Developer Connections et l'outil DROP, soit l'instruction DROP PROCEDURE ou DROP FUNCTION.
Attention : ne supprimez pas la procédure ADD_EVALUATION ou la fonction CALCULATE_SCORE. Vous en aurez besoin pour des tutoriels ultérieurs. Pour pratiquer la suppression de sous-programmes, créez des sous-programmes simples et supprimez-les.
Pour supprimer un sous-programme autonome à l'aide de l'outil Supprimer, procédez comme suit :
-
Dans le cadre Connexions, développez hr_conn.
-
Dans la liste des types d'objet de schéma, développez Fonctions ou Procédures.
-
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 l'instruction à supprimer.
-
Dans la liste des choix, cliquez sur Supprimer.
-
Dans la fenêtre Déposer, cliquez sur Appliquer.
-
Dans la fenêtre de validation, cliquez sur OK.
Voir aussi :
-
"A propos des instructions LDD (Data Definition Language)" pour obtenir des informations générales sur les instructions DROP PROCEDURE et DROP FUNCTION
-
Manuel Oracle Database SQL Language Reference, pour plus d'informations sur l'instruction DROP PROCEDURE
-
Manuel Oracle Database SQL Language Reference, pour plus d'informations sur l'instruction DROP FUNCTION