Gérer efficacement le code PL/SQL peut être complexe.
Sans une structure adéquate, cela peut mener à des erreurs, des difficultés de maintenance et une mauvaise réutilisation du code.
Cet article vous guide dans la création et l’utilisation de packages PL/SQL pour une gestion optimale du code.
Maîtriser le langage SQL en environnement SGBDR. SQL n'aura plus de secrets pour vous !
aborderons un exercice pratique pour renforcer votre compréhension. Voici ce que nous avons étudié :
-
Qu’est-ce qu’un package ?
Un package est un regroupement logique de procédures, de fonctions et d’autres objets dans une base de données. Il facilite la gestion du code et améliore la modularité. - La structure d’un packageUn package se compose de deux parties principales :la spécification (où sont déclarées les procédures et les fonctions) et le corps (où sont définies les implémentations).
-
Spécification de package
La spécification énonce les objets qui seront accessibles à d’autres programmes, permettant ainsi de cacher les détails d’implémentation. -
Corps de package
Le corps contient les implémentations des procédures et des fonctions déclarées dans la spécification. -
Utilisation des fonctions, procédures et des curseurs dans un package
Les packages permettent d’organiser ces éléments de manière cohérente, facilitant ainsi leur utilisation et leur maintenance. -
Utiliser les objets d’un package
Les objets d’un package peuvent être utilisés par d’autres procédures, fonctions ou packages, favorisant la réutilisation du code. -
Maintenir un package
La maintenance des packages inclut la compilation, la modification et la suppression des objets en fonction des besoins.
Créer un Package PL/SQL gestEmp
Énoncé de l’Exercice
Créez un package nommer gestEmp avec les objets suivants :
- Une fonction qui contrôle l’existence d’un salarié à partir de son numéro.
- Une procédure qui permet de supprimer un salarié à partir de son numéro.
- Une procédure qui permet d’augmenter le salaire d’un salarié. La procédure doit recevoir deux arguments :le premier est le numéro du salarié, le deuxième le pourcentage d’augmentation.
- Une procédure qui affiche tous les salariés dont le salaire est supérieur à la moyenne des salaires (cette procédure devra s’appuyer sur un curseur nommé « cur_sal »).
Solution : Package PL/SQL gestEmp
- Création de la Spécification du Package
create or replace PACKAGE gestEmp AS
FUNCTION existeSalarie(numero_salarie IN NUMBER) RETURN BOOLEAN;
PROCEDURE supprimerSalarie(numero_salarie IN NUMBER);
PROCEDURE augmenterSalaire(numero_salarie IN NUMBER, pourcentage IN NUMBER);
PROCEDURE afficherSalairesSupMoyenne;
END gestEmp;
- Création du Corps du Package
CREATE OR REPLACE PACKAGE BODY gestEmp AS
FUNCTION existeSalarie(numero_salarie IN NUMBER) RETURN BOOLEAN IS
v_count NUMBER;
BEGIN
SELECT COUNT(*) INTO v_count FROM Salaries WHERE numero_sal = numero_salarie;
RETURN v_count > 0;
END existeSalarie;
PROCEDURE supprimerSalarie(numero_salarie IN NUMBER) IS
BEGIN
DELETE FROM Salaries WHERE numero_sal = numero_salarie;
END supprimerSalarie;
PROCEDURE augmenterSalaire(numero_salarie IN NUMBER, pourcentage IN NUMBER) IS
BEGIN
UPDATE Salaries
SET salaire = salaire + (salaire * pourcentage / 100)
WHERE numero_sal = numero_salarie;
END augmenterSalaire;
PROCEDURE afficherSalairesSupMoyenne IS
CURSOR cur_sal IS SELECT salaire FROM Salaries;
v_moyenne NUMBER;
v_salaire NUMBER;
BEGIN
SELECT AVG(salaire) INTO v_moyenne FROM Salaries;
OPEN cur_sal;
LOOP
FETCH cur_sal INTO v_salaire;
EXIT WHEN cur_sal%NOTFOUND;
IF v_salaire > v_moyenne THEN
DBMS_OUTPUT.PUT_LINE('Salaire: ' || v_salaire);
END IF;
END LOOP;
CLOSE cur_sal;
END afficherSalairesSupMoyenne;
END gestEmp;
Et voilà la Spécification et le corps du Package gestEmp a été créer avec succès :
Explication de la Solution
- Fonction existeSalarie :Cette fonction vérifie si un salarié existe dans la table Salariés en comptant le nombre d’occurrences du numéro de salarié. Elle retourneTRUEsi le salarié existe, sinonFALSE.
- Procédure supprimerSalarie :Cette procédure supprime un salarié de la table Salariés en utilisant son numéro. Elle n’a pas de retour de valeur.
- Procédure augmenterSalaire :Cette procédure augmente le salaire d’un salarié en calculant le nouveau salaire à partir d’un pourcentage donné. Elle prend le numéro du salarié et le pourcentage d’augmentation comme paramètres.
- Procédure afficherSalairesSupMoyenne :Cette procédure affiche les salaires qui dépassent la moyenne des salaires. Elle utilise un curseur pour parcourir tous les salaires et compare chaque salaire à la moyenne.
Exécuter le Package PL/SQL gestEmp
- Activer l’affichage de sortie (si nécessaire) :Assurez-vous que la sortie de la console est activée pour voir les résultats des appels de procédure qui utilisent DBMS_OUTPUT.PUT_LINE. Exécutez la commande suivante :
SET SERVEROUTPUT ON;
- Vérifier l’existence d’un salarié :Appelez la fonction existeSalarie pour vérifier si un salarié existe. Remplacez numero_salarie par le numéro réel du salarié que vous souhaitez vérifier.
DECLARE
v_existe BOOLEAN;
BEGIN
v_existe := gestEmp.existeSalarie(2700); -- Remplacez 2700 par le numéro du salarié
IF v_existe THEN
DBMS_OUTPUT.PUT_LINE('Le salarié existe.');
ELSE
DBMS_OUTPUT.PUT_LINE('Le salarié n' 'existe pas.');
END IF;
END;
Et voici son résultat lors de son exécution :
- Supprimer un salarié :Utilisez la procédure supprimerSalarie pour supprimer un salarié en fonction de son numéro.
BEGIN
gestEmp.supprimerSalarie(2700); -- Remplacez 2700 par le numéro du salarié à supprimer
DBMS_OUTPUT.PUT_LINE('Salarié supprimé.');
END;
Et voici son résultat lors de son exécution :
- Augmenter le salaire d’un salarié :Exécutez la procédure augmenterSalaire pour modifier le salaire d’un salarié. Remplacez numero_salarie et pourcentage par les valeurs appropriées.
BEGIN
gestEmp.augmenterSalaire(123, 10); -- Remplacez 123 par le numéro du salarié et 10 par le pourcentage d'augmentation
DBMS_OUTPUT.PUT_LINE('Augmentation de salaire effectuée.');
END;
Et voici son résultat lors de son exécution :
- Afficher les salariés dont le salaire est supérieur à la moyenne :
Appelez la procédure afficherSalairesSupMoyenne pour afficher les salaires des salariés qui dépassent la moyenne.
BEGIN
gestEmp.afficherSalairesSupMoyenne;
END;
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
Qu'est-ce qu'un package en PL/SQL ?
Comment créer un package en PL/SQL ?
Comment utiliser les objets d'un package PL/SQL ?
Quels sont les avantages de l'utilisation des packages PL/SQL ?
Comment maintenir un package PL/SQL ?
Conclusion
Les packages PL/SQL offrent une solution robuste pour gérer le code de manière modulaire et réutilisable. Comment envisagez-vous d’implémenter cette approche dans votre propre gestion de base de données ?