Comprendre les bases du LMD en PL/SQL peut être complexe pour les débutants.
Sans une bonne compréhension, cela peut entraîner des erreurs dans la gestion des données, rendant les processus inefficaces.
Cet article vous guide à travers les concepts clés du LMD en PL/SQL avec des exemples pratiques pour faciliter l’apprentissage.
Maîtriser le langage SQL en environnement SGBDR. SQL n'aura plus de secrets pour vous !
Dans cette section, nous abordons les concepts fondamentaux du LMD (Langage de Manipulation des Données) en PL/SQL, avec un rappel des commandes SELECT INTO, BULK COLLECT INTO, ainsi que les opérations INSERT, UPDATE et DELETE dans un bloc PL/SQL. Nous revoyons également les attributs SQL%FOUND, SQL%NOTFOUND et SQL%ROWCOUNT, ainsi que la clause RETURNING, pour renforcer votre compréhension à travers des exercices pratiques.
Exercice sur PL/SQL LMD
Créez un bloc PL/SQL qui réalise les opérations suivantes :
- Affiche le nom, la fonction, le salaire et la commission du salarié dont la fonction est « Directeur ».
- Affiche le nom, la fonction, le salaire et la commission de tous les salariés.
- Met à jour la commission du salarié « Orlando » avec une valeur de 5000, puis affiche la nouvelle valeur insérée.
- Insère une nouvelle catégorie avec les valeurs code_cat = 77 et libelle_cat = ‘Outillage’, puis affiche les valeurs insérées pour les colonnes code_cat et libelle_cat.
Solution LMD et explications
Voici le code PL/SQL pour réaliser ces opérations :
DECLARE
-- Variables pour stocker les informations des salariés
var_nom salaries.nom_sal%TYPE;
var_fonction salaries.fonction%TYPE;
var_salaire salaries.salaire%TYPE;
var_comission salaries.comission%TYPE;
-- Variables pour la catégorie
var_code_cat categories.code_cat%TYPE := 77;
var_libelle_cat categories.libelle_cat%TYPE := 'Outillage';
BEGIN
-- 1. Affichage des informations du salarié "Directeur"
SELECT nom_sal, fonction, salaire, comission INTO var_nom, var_fonction, var_salaire, var_comission
FROM salaries
WHERE fonction = 'Directeur';
DBMS_OUTPUT.PUT_LINE('Directeur: ' || var_nom || ', Fonction: ' || var_fonction || ', Salaire: ' || var_salaire || ', Commission: ' || var_comission);
-- 2. Affichage des informations de tous les salariés
FOR rec IN (SELECT nom_sal, fonction, salaire, comission FROM salaries) LOOP
DBMS_OUTPUT.PUT_LINE('Nom: ' || rec.nom_sal || ', Fonction: ' || rec.fonction || ', Salaire: ' || rec.salaire || ', Commission: ' || NVL(rec.comission, 0));
END LOOP;
-- 3. Mise à jour de la commission pour le salarié "Orlando"
UPDATE salaries SET comission = 5000 WHERE nom_sal = 'Orlando'
RETURNING comission INTO var_comission;
DBMS_OUTPUT.PUT_LINE('Nouvelle commission pour Orlando: ' || var_comission);
-- 4. Insertion d'une nouvelle catégorie
INSERT INTO categories (code_cat, libelle_cat) VALUES (var_code_cat, var_libelle_cat)
RETURNING code_cat, libelle_cat INTO var_code_cat, var_libelle_cat;
DBMS_OUTPUT.PUT_LINE('Nouvelle catégorie ajoutée - Code: ' || var_code_cat || ', Libellé: ' || var_libelle_cat);
END;
Explications
- Affichage des informations du salarié « Directeur » :Ce bloc extrait et affiche les informations du salarié dont la fonction est « Directeur ».
- Affichage de tous les salariés :Un curseur FOR est utilisé pour parcourir chaque salarié et afficher son nom, sa fonction, son salaire et sa commission.
- Mise à jour de la commission pour Orlando :La commande UPDATE modifie la commission du salarié nommé « Orlando » à 5000, puis affiche cette valeur.
- Insertion d’une nouvelle catégorie :La commande INSERT ajoute une nouvelle catégorie dans la table categories et retourne les valeurs des champs insérés.
Et voici son résultat lors de son exécution :
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 utiliser SELECT INTO en PL/SQL ?
Qu'est-ce que BULK COLLECT INTO en PL/SQL ?
Comment mettre à jour une colonne avec PL/SQL ?
Comment insérer de nouvelles données en PL/SQL ?
Quels sont les attributs SQL%FOUND et SQL%ROWCOUNT ?
Conclusion
En maîtrisant les concepts LMD en PL/SQL, vous améliorez considérablement vos compétences en manipulation de données. Quel autre aspect du PL/SQL souhaitez-vous explorer davantage ?