Gérer efficacement les opérations répétitives et conditionnelles dans une base de données peut être complexe.
Cela entraîne souvent des erreurs manuelles et une perte de temps considérable dans l’exécution des processus.
Dans cet article, nous explorons comment les boucles FOR et WHILE en PL/SQL peuvent simplifier et automatiser ces tâches.
Maîtriser le langage SQL en environnement SGBDR. SQL n'aura plus de secrets pour vous !
Dans le langage PL/SQL, les instructions de contrôle permettent de gérer le flux de l’exécution des opérations. Elles incluent des structures de boucle, comme FOR et WHILE, et des conditions IF…THEN…ELSE. Ces structures sont essentielles pour exécuter des actions répétitives, contrôler les conditions d’exécution, et effectuer des mises à jour conditionnelles sur des ensembles de données.
Instructions de contrôle : Boucles PL/SQL
- Boucle FOR :Elle est utilisée pour parcourir une séquence d’enregistrements ou un ensemble de valeurs défini. Elle s’exécute un nombre précis de fois.
- Boucle WHILE :Exécute un bloc d’instructions tant qu’une condition est vraie, ce qui la rend utile pour des répétitions avec une condition de sortie.
L’exercice suivant utilise les boucles WHILE et FOR pour exécuter des actions conditionnelles et répétitives sur les données d’une table salaries.
Exercice PL/SQL : Boucles et salaires
Annonce d’exercice
Créez le bloc PL/SQL qui permet d’effectuer les opérations suivantes :
- Simuler une augmentation de salaire des salariés de 10 % si leur salaire est inférieur à la moyenne des salaires.
- Affichez la liste de tous les articles en utilisant la boucle WHILE et la boucle FOR.
Solution PL/SQL : Boucles FOR et WHILE
Pour cet exercice, nous allons utiliser les boucles WHILE et FOR ainsi qu’une logique pour calculer la moyenne des salaires et appliquer l’augmentation.
SET SERVEROUTPUT ON;
declare
avg_salary number(10,2);
var_cpt number(5) := 0;
total_count number(5); -- Nouvelle variable pour stocker le nombre de lignes dans la table salaries
nom varchar2(50);
prenom varchar2(50);
cursor cur_salaries is
select * from salaries;
begin
-- Calcul de la moyenne des salaires
select avg(salaire) into avg_salary from salaries;
-- Augmentation des salaires inférieurs à la moyenne
for emp in cur_salaries loop
if emp.salaire < avg_salary then
update salaries
set salaire = salaire * 1.10
where numero_sal = emp.numero_sal;
DBMS_OUTPUT.PUT_LINE('Augmentation de salaire de 10% pour : ' || emp.nom_sal || ' ' || emp.prenom_sal);
end if;
end loop;
-- Stocker le nombre total d'enregistrements dans une variable
select count(*) into total_count from salaries;
-- Affichage des articles (employés) avec une boucle WHILE
var_cpt := 0;
while var_cpt < total_count loop
var_cpt := var_cpt + 1;
select nom_sal, prenom_sal into nom, prenom
from (select rownum r, nom_sal, prenom_sal from salaries)
where r = var_cpt;
DBMS_OUTPUT.PUT_LINE('Article WHILE : ' || nom || ' ' || prenom);
end loop;
-- Affichage des articles (employés) avec une boucle FOR
for emp in (select nom_sal, prenom_sal from salaries) loop
DBMS_OUTPUT.PUT_LINE('Article FOR : ' || emp.nom_sal || ' ' || emp.prenom_sal);
end loop;
end;
Explications
- Calcul de la moyenne des salaires :On utilise une requête SELECT AVG(salaire) pour calculer la moyenne des salaires dans la table salaries et on stocke ce résultat dans la variable avg_salary.
- Boucle FOR pour augmentation des salaires :Un curseur est utilisé pour parcourir tous les employés. Pour chaque employé dont le salaire est inférieur à la moyenne, le salaire est augmenté de 10 %. Un message est affiché pour indiquer que l’augmentation a été effectuée.
- Boucle WHILE pour l’affichage :Le nombre total d’employés est d’abord stocké dans total_count. Ensuite, la boucle WHILE incrémente un compteur et récupère les noms et prénoms des employés un par un, en les affichant.
- Boucle FOR pour l’affichage :La boucle FOR parcourt les employés et affiche leurs noms et prénoms directement à partir de la requête SELECT.
Résultat attendu avec PL/SQL
Après l’exécution du script PL/SQL, vous pouvez vous attendre aux résultats suivants :
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 les boucles sont-elles utilisées en PL/SQL ?
Qu'est-ce qu'une boucle FOR en PL/SQL ?
Comment fonctionne une boucle WHILE en PL/SQL ?
Quel est l'objectif de l'exercice PL/SQL proposé ?
Comment calculer la moyenne des salaires en PL/SQL ?
Conclusion
Les boucles en PL/SQL offrent une grande flexibilité pour automatiser les tâches répétitives. Quelle autre application pratique pouvez-vous envisager en utilisant ces structures de contrôle dans vos projets PL/SQL ?