Développer des scripts PL/SQL efficaces nécessite une compréhension approfondie des variables.
Une mauvaise gestion des variables peut entraîner des erreurs de code et des inefficacités.
Cet article explore en détail l’utilisation des variables PL/SQL pour optimiser vos scripts.
Maîtriser le langage SQL en environnement SGBDR. SQL n'aura plus de secrets pour vous !
Voici un résumé de ce que nous avons étudié jusqu’à présent : déclaration des données PL/SQL, utilisation des variables de liaison et de substitution, portée des variables, et manipulation des variables composées. Nous avons également exploré les structures et tableaux, ainsi que les types basés sur %TYPE et %ROWTYPE.
La déclaration de données PL/SQL
Nous avons appris à déclarer des variables en PL/SQL, en précisant leur type et leurs valeurs par défaut si nécessaire.
Les variables de liaison et de substitution
Les variables de liaison permettent de transmettre des valeurs entre PL/SQL et SQL, tandis que les variables de substitution permettent d’utiliser des valeurs d’entrée utilisateur dans un script SQL.
La portée des variables
Nous avons étudié comment la portée des variables, locale ou globale, affecte leur visibilité et leur durée de vie dans les blocs de code PL/SQL.
Les variables composées : structures et tableaux
- Structures (Enregistrements) :Utilisées pour regrouper différents types de données dans une seule variable.
- Tableaux :Utilisés pour stocker plusieurs éléments du même type, avec les tableaux associatifs et les tableaux pré-dimensionnés.
Les variables basées avec %TYPE et %ROWTYPE
- %TYPE :Permet de créer une variable ayant le même type qu’une colonne d’une table.
- %ROWTYPE :Permet de créer une variable ayant la même structure qu’une ligne d’une table.
Vous allez maintenant passer aux exercices pratiques pour appliquer les notions étudiées en PL/SQL.
- Exercice 1 :Les variables composées
Énonce d’exercice
Créez un bloc PL/SQL avec les étapes suivantes :
- Déclarez une variable de type structure nommée structure_employe contenant tous les champs de la table salarie.
- Déclarez un tableau nommé tab_employes qui contiendra des valeurs de type structure_employe.
- Déclarez une variable employes de type tableau tab_employes.
- Insérez cinq employés dans le tableau, puis affichez la liste de tous les employés insérés.
Solution :
Voici la solution pour les exercices pratiques. Nous allons maintenant examiner les étapes en détail pour chaque questions afin de bien comprendre l’utilisation des variables en PL/SQL.
SET SERVEROUTPUT ON;
DECLARE
-- Déclaration de la structure "structure_employe" qui contient les informations d'un employé
TYPE structure_employe IS RECORD (
numero_sal NUMBER,
nom_sal VARCHAR2(50),
prenom_sal VARCHAR2(50),
fonction VARCHAR2(50),
salaire NUMBER(10,2),
commission NUMBER(10,2)
);
-- Déclaration d'un type tableau basé sur la structure "structure_employe"
TYPE tab_employes IS TABLE OF structure_employe;
employes tab_employes := tab_employes(); -- Initialisation du tableau
BEGIN
-- Extension du tableau pour contenir 5 éléments
employes.EXTEND(5);
-- Insertion de chaque employé avec ses informations spécifiques
employes(1).numero_sal := 1001;
employes(1).nom_sal := 'Dupont';
employes(1).prenom_sal := 'Jean';
employes(1).fonction := 'Analyste';
employes(1).salaire := 3500;
employes(1).commission := 500;
employes(2).numero_sal := 1002;
employes(2).nom_sal := 'Martin';
employes(2).prenom_sal := 'Sophie';
employes(2).fonction := 'Développeur';
employes(2).salaire := 4000;
employes(2).commission := 600;
employes(3).numero_sal := 1003;
employes(3).nom_sal := 'Durand';
employes(3).prenom_sal := 'Luc';
employes(3).fonction := 'Chef de projet';
employes(3).salaire := 5000;
employes(3).commission := 750;
employes(4).numero_sal := 1004;
employes(4).nom_sal := 'Bernard';
employes(4).prenom_sal := 'Alice';
employes(4).fonction := 'Support';
employes(4).salaire := 3000;
employes(4).commission := 400;
employes(5).numero_sal := 1005;
employes(5).nom_sal := 'Thomas';
employes(5).prenom_sal := 'Paul';
employes(5).fonction := 'Testeur';
employes(5).salaire := 2800;
employes(5).commission := 300;
-- Affichage des informations de chaque employé dans le tableau
FOR i IN 1..employes.COUNT LOOP
DBMS_OUTPUT.PUT_LINE('Employé numéro : ' || employes(i).numero_sal);
DBMS_OUTPUT.PUT_LINE('Nom : ' || employes(i).nom_sal || ' ' || employes(i).prenom_sal);
DBMS_OUTPUT.PUT_LINE('Fonction : ' || employes(i).fonction);
DBMS_OUTPUT.PUT_LINE('Salaire : ' || employes(i).salaire);
DBMS_OUTPUT.PUT_LINE('Commission : ' || employes(i).commission);
DBMS_OUTPUT.PUT_LINE('--------------------------');
END LOOP;
END;
Voici une explication concise et organisée du code :
- Activation de l’affichage :La commande SET SERVEROUTPUT ON permet de visualiser les sorties en console.
- Déclaration des types :La structure structure_employe est définie pour stocker les informations d’un employé avec des champs comme numero_sal, nom_sal, et autres.Ensuite, un tableau nommé tab_employes, basé sur cette structure, est déclaré pour contenir plusieurs enregistrements d’employés.
- Initialisation du tableau :Le tableau employes est étendu pour contenir 5 éléments, représentant chacun un employé distinct.
- Insertion des données :Les détails spécifiques de cinq employés sont assignés dans chaque position du tableau employes pour les champs correspondants de la structure.
- Affichage des données :Une boucle FOR parcourt chaque élément du tableau et utilise DBMS_OUTPUT.PUT_LINE pour afficher les informations de chaque employé, séparées par une ligne pour faciliter la lisibilité.
Résultat affiché
Lorsque vous exécutez ce bloc PL/SQL, le résultat affiché devrait ressembler à ceci
- Exercice 2 :Les Variables Basées
Annonce d’exercice :
Créez un bloc PL/SQL avec les étapes suivantes :
- Déclarez une variable nommée date_commande de même type que la colonne date_cde de la table commandes.
- Initialisez cette variable avec la fonction SYSDATE et affichez son contenu.
- Déclarez une variable ligne_commande de même type qu’une ligne de la table commandes.
- Initialisez une ligne de commande dans la variable ligne_commande et affichez son contenu.
Solution :
Voici la solution pour les exercices pratiques. Nous allons maintenant examiner les étapes en détail pour chaque questions afin de bien comprendre l’utilisation des variables en PL/SQL.
SET SERVEROUTPUT ON;
DECLARE
-- 1. Déclaration de la variable `date_commande` ayant le même type que la colonne `date_cde` de la table `commandes`
date_commande commandes.date_cde%TYPE;
-- 3. Déclaration de la variable `ligne_commande` ayant le même type qu'une ligne de la table `commandes`
ligne_commande commandes%ROWTYPE;
BEGIN
-- 2. Initialisation de `date_commande` avec la date actuelle et affichage de son contenu
date_commande := SYSDATE;
DBMS_OUTPUT.PUT_LINE('Date de la commande : ' || TO_CHAR(date_commande, 'DD-MM-YYYY HH24:MI:SS'));
-- 4. Initialisation des champs de `ligne_commande` avec des valeurs de commande fictives et affichage de son contenu
ligne_commande.numero_cde := 101; -- Exemple d'ID de commande
ligne_commande.numero_sal := 2001; -- Exemple d'ID de salarié
ligne_commande.numero_cli := 3001; -- Exemple d'ID de client
ligne_commande.date_cde := date_commande; -- Date actuelle
ligne_commande.taux_remise := 10.5; -- Exemple de taux de remise
ligne_commande.etat_cde := 'En cours'; -- Exemple d'état de commande
ligne_commande.date_envoi := SYSDATE + 7; -- Date d'envoi prévue dans 7 jours
ligne_commande.taux_tva := 20.0; -- Exemple de taux de TVA
DBMS_OUTPUT.PUT_LINE('Contenu de la ligne de commande :');
DBMS_OUTPUT.PUT_LINE('ID Commande : ' || ligne_commande.numero_cde);
DBMS_OUTPUT.PUT_LINE('Numéro salarié : ' || ligne_commande.numero_sal);
DBMS_OUTPUT.PUT_LINE('Numéro client : ' || ligne_commande.numero_cli);
DBMS_OUTPUT.PUT_LINE('Date de commande : ' || TO_CHAR(ligne_commande.date_cde, 'DD-MM-YYYY HH24:MI:SS'));
DBMS_OUTPUT.PUT_LINE('Taux de remise : ' || ligne_commande.taux_remise || '%');
DBMS_OUTPUT.PUT_LINE('État de commande : ' || ligne_commande.etat_cde);
DBMS_OUTPUT.PUT_LINE('Date de envoi : ' || TO_CHAR(ligne_commande.date_envoi, 'DD-MM-YYYY'));
DBMS_OUTPUT.PUT_LINE('Taux de TVA : ' || ligne_commande.taux_tva || '%');
END;
Explication des étapes
Voici une explication concise et organisée du code :
- Déclaration de date_commande :La variable date_commande est définie avec %TYPE pour prendre le même type que la colonne date_cde.
- Initialisation et affichage de date_commande :La date et l’heure actuelles sont assignées à date_commande avec SYSDATE, puis affichées.
- Déclaration de ligne_commande :Cette variable est définie avec %ROWTYPE, correspondant à la structure complète d’une ligne de la table commandes.
- Initialisation et affichage de ligne_commande :Chaque champ de la commande est assigné avec des valeurs fictives pour illustrer une commande complète. Ces valeurs sont ensuite affichées avec DBMS_OUTPUT.PUT_LINE pour vérifier le contenu.
Résultat affiché
Lorsque vous exécutez ce bloc PL/SQL, le résultat affiché devrait ressembler à ceci
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
Comment déclarer des variables en PL/SQL ?
Qu'est-ce que les variables de liaison et de substitution ?
Quelle est la portée des variables en PL/SQL ?
Comment utiliser les structures et tableaux en PL/SQL ?
Que sont %TYPE et %ROWTYPE en PL/SQL ?
Conclusion
Les variables en PL/SQL sont essentielles pour écrire des scripts efficaces et dynamiques. Comment allez-vous appliquer ces concepts dans vos projets PL/SQL futurs ?