La manipulation incorrecte des arguments en PL/SQL peut entraîner des erreurs de données.
Une mauvaise compréhension des types d’arguments peut provoquer des dysfonctionnements dans vos procédures.
Cet article clarifie l’utilisation des arguments en PL/SQL via des exemples concrets pour renforcer votre maîtrise du sujet.
Maîtriser le langage SQL en environnement SGBDR. SQL n'aura plus de secrets pour vous !
Les arguments sont des valeurs que vous passez aux fonctions ou procédures, leur permettant de travailler avec des données externes. Voici les différents types d’arguments et leur syntaxe :
[ { IN | OUT | IN OUT } ] [ NOCOPY ]
TYPE [ , . . . ]
- IN :Indique que le paramètre transmis par le programme appelant n’est pas modifiable par la fonction.
- OUT :Indique que le paramètre est modifiable par la procédure.
- IN OUT :Indique que le paramètre est transmis par le programme appelant et renseigné par la fonction.
- NOCOPY :Indique que le paramètre est transmis par référence (pointeur) et non par copie de la valeur.
- TYPE :Représente le type SQL ou PL/SQL du paramètre.
- :=: Représente le symbole d’assignation d’une valeur par défaut.
- DEFAULT :Identique à :=.
Pour illustrer le concept des arguments dans PL/SQL, voici un schéma explicatif simple présentant les principaux types de paramètres (IN, OUT, IN OUT) et leur utilisation dans des procédures.
Arguments IN en PL/SQL : Exemple pratique
Voici un exemple d’une procédure utilisant un paramètre IN :
CREATE OR REPLACE PROCEDURE augmentationSalaireIN(numsal IN NUMBER, taux IN NUMBER)
IS
nouveausal salaries.salaire%TYPE;
BEGIN
DBMS_OUTPUT.PUT_LINE('Valeur de numsal avant : ' || numsal);
DBMS_OUTPUT.PUT_LINE('Valeur de taux avant : ' || taux);
-- Tentative de modification du paramètre IN (ceci provoquera une erreur)
numsal := 4; -- Erreur : vous ne pouvez pas modifier un paramètre IN
taux := 50; -- Erreur : vous ne pouvez pas modifier un paramètre IN
DBMS_OUTPUT.PUT_LINE('Valeur de numsal après : ' || numsal);
DBMS_OUTPUT.PUT_LINE('Valeur de taux après : ' || taux);
UPDATE salaries SET salaire = salaire * (1 + taux / 100)
WHERE numero_sal = numsal;
SELECT salaire INTO nouveausal FROM salaries WHERE numero_sal = numsal;
DBMS_OUTPUT.PUT_LINE('Le salarié ' || numsal || ' a été augmenté, nouveau salaire : ' || nouveausal);
END augmentationSalaireIN;
/
Voila le résultat entendu lors de l’exécution :
Arguments OUT en PL/SQL : Exemple illustré
Voici un exemple d’une procédure utilisant un paramètre OUT :
CREATE OR REPLACE PROCEDURE augmentationSalaireOUT(numsal OUT NUMBER, taux OUT NUMBER)
IS
nouveausal salaries.salaire%TYPE;
BEGIN
DBMS_OUTPUT.PUT_LINE('Valeur de numsal avant : ' || numsal);
DBMS_OUTPUT.PUT_LINE('Valeur de taux avant : ' || taux);
-- Assignation de valeurs aux paramètres OUT
numsal := 4;
taux := 50;
DBMS_OUTPUT.PUT_LINE('Valeur de numsal après : ' || numsal);
DBMS_OUTPUT.PUT_LINE('Valeur de taux après : ' || taux);
UPDATE salaries SET salaire = salaire * (1 + taux / 100)
WHERE numero_sal = numsal;
SELECT salaire INTO nouveausal FROM salaries WHERE numero_sal = numsal;
DBMS_OUTPUT.PUT_LINE('Le salarié ' || numsal || ' a été augmenté, nouveau salaire : ' || nouveausal);
END augmentationSalaireOUT;
/
Voila le résultat affiché lors de faire l’appel à cette procédure :
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Quels sont les types d'arguments en PL/SQL?
Comment fonctionne un paramètre IN en PL/SQL?
Quel est le rôle d'un paramètre OUT en PL/SQL?
Comment utiliser les arguments IN OUT en PL/SQL?
Qu'est-ce que l'argument NOCOPY en PL/SQL?
Conclusion
En explorant les différents types d’arguments en PL/SQL, vous pouvez optimiser vos procédures pour mieux gérer les données. Quel type d’argument pensez-vous utiliser le plus dans vos prochains projets PL/SQL?