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 :
-
Partie déclarative (facultatif)
La partie déclarative contient des déclarations de types, de constantes, de variables, d'exceptions, de curseurs déclarés et de sous-programmes imbriqués. Ces éléments sont locaux au sous-programme et cessent d'exister lorsque l'exécution du sous-programme est terminée.
-
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 traitement des exceptions (facultatif)
La pièce de traitement des anomalies contient du code qui traite les anomalies (erreurs d'exécution).
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 :
-
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 Create Procedure s'ouvre.
-
Pour Schema, acceptez la valeur par défaut HR.
-
Pour le 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 : Name, PARAM1; Mode, IN; No Copy, désélectionné; Data Type, VARCHAR2; Default Value, vide.
-
Pour Name, remplacez PARAM1 par
EVALUATION_ID. -
Dans le champ Mode, acceptez la valeur par défaut IN.
-
Pour le type de données, sélectionnez NUMBER dans le menu.
-
Laissez la 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 le type de données DATE. -
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 à 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 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.
-
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.)
-
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 :
-
Oracle SQL Developer User's Guide pour un autre exemple d'utilisation de SQL Developer pour créer une procédure autonome
-
" À propos des énoncés LDD (Langage de définition de données) " pour des informations générales qui s'appliquent à l'énoncé CREATE PROCEDURE
-
Informations de référence sur le langage PL/SQL pour Oracle Database pour plus d'informations sur l'énoncé CREATE PROCEDURE
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 :
-
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 choix, cliquez sur Nouvelle fonction.
La fenêtre Create Function s'ouvre.
-
Pour Schema, acceptez la valeur par défaut HR.
-
Pour Name, 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 : Name, PARAM1; Mode, IN; No Copy, désélectionné; Data Type, VARCHAR2; Default Value, vide.
-
Pour Name, remplacez PARAM1 par
cat. -
Dans le champ Mode, acceptez la valeur par défaut IN.
-
Pour Data Type, acceptez la valeur par défaut, VARCHAR2.
-
Laissez la 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 le type de données NUMBER. -
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.
-
Remplacez NULL par
score * weight. -
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 :
-
"À propos des énoncés LDD (Langage de définition de données)" pour des informations générales qui s'appliquent à l'énoncé CREATE FUNCTION
-
Informations de référence sur le langage PL/SQL pour Oracle Database pour plus d'informations sur l'énoncé CREATE FUNCTION
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 :
-
Dans le cadre Connexions, développez hr_conn.
-
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.
-
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.)
-
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.
-
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 :
-
" À propos des énoncés LDD (Langage de définition de données) " pour des informations générales qui s'appliquent aux énoncés ALTER PROCEDURE et ALTER FUNCTION
-
Informations de référence sur le langage PL/SQL pour Oracle Database pour plus d'informations sur l'énoncé ALTER PROCEDURE
-
Informations de référence sur le langage PL/SQL pour Oracle Database pour plus d'informations sur l'énoncé ALTER FUNCTION
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 :
-
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 Run PL/SQL s'ouvre. Son bloc PL/SQL comprend le code suivant :
v_Return := CALCULATE_SCORE ( CAT => CAT, SCORE => SCORE, WEIGHT => WEIGHT ); -
Remplacez les valeurs SCORE et WEIGHT par
8et0.2, respectivement :v_Return := CALCULATE_SCORE ( CAT => CAT, SCORE => 8, WEIGHT => 0.2 ); -
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.
-
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 :
-
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 la procédure à supprimer.
-
Dans la liste des choix, cliquez sur Supprimer.
-
Dans la fenêtre Déposer, cliquez sur Appliquer.
-
Dans la fenêtre de confirmation, cliquez sur OK.
Voir aussi :
-
" À propos des énoncés LDD (Langage de définition de données) " pour des informations générales qui s'appliquent aux énoncés DROP PROCEDURE et DROP FUNCTION
-
Informations de référence sur le langage SQL pour Oracle Database pour plus d'informations sur l'énoncé DROP PROCEDURE
-
Informations de référence sur le langage SQL pour Oracle Database pour plus d'informations sur l'énoncé DROP FUNCTION