Les tâches répétitives en programmation peuvent rapidement devenir fastidieuses et sujettes aux erreurs.
Sans automatisation adéquate, le code devient difficile à gérer et à maintenir, augmentant le risque d’incohérences et d’erreurs.
Cet article explore les boucles LOOP, WHILE et FOR en PL/SQL, offrant des solutions pour automatiser efficacement vos processus.
Maîtriser le langage SQL en environnement SGBDR. SQL n'aura plus de secrets pour vous !
L’objectif de cette section est de décrire les différentes instructions de contrôle en PL/SQL et d’apprendre à utiliser efficacement les traitements itératifs. Ces boucles permettent d’automatiser la répétition de séquences de commandes en fonction de conditions ou de valeurs définies. Vous allez découvrir comment ces instructions, telles que LOOP, WHILE et FOR, peuvent être appliquées pour résoudre des problèmes nécessitant des itérations répétées, améliorant ainsi l’efficacité et la clarté du code PL/SQL.
Boucles PL/SQL : Instruction LOOP
L’instruction LOOP permet de répéter une séquence de commandes de manière indéfinie, jusqu’à ce qu’une condition d’arrêt explicite soit rencontrée. Cette instruction est particulièrement utile lorsque vous ne connaissez pas à l’avance le nombre d’itérations à effectuer et que vous avez besoin d’un contrôle manuel pour interrompre la boucle.
[ <> ]
LOOP
;
EXIT [ ] | EXIT WHEN ;
END LOOP;
Le schéma de cette syntaxe montre comment la boucle est définie et comment elle se termine avec l’instruction EXIT, qui peut être conditionnée par une expression. Vous pouvez nommer la boucle pour une meilleure lisibilité ou gérer plusieurs boucles imbriquées.
Exemple :
declare
var_cpt number(5) := 0;
begin
loop
var_cpt := var_cpt + 1;
DBMS_OUTPUT.PUT_LINE('Valeur du compteur: ' || var_cpt);
if var_cpt >= 22 then
exit;
end if;
end loop;
end;
Dans cet exemple, la boucle LOOP s’exécute jusqu’à ce que la valeur de var_cpt atteigne 22. À chaque itération, la variable var_cpt est incrémentée, et sa valeur est affichée à l’aide de la fonction DBMS_OUTPUT.PUT_LINE. La boucle se termine grâce à l’instruction EXIT une fois que la condition var_cpt >= 22 est remplie.
Boucles PL/SQL : Instruction WHILE
Après avoir vu l’instruction LOOP, nous passons à l’instruction WHILE, qui est un autre type de boucle couramment utilisé. Contrairement à LOOP, qui s’exécute indéfiniment jusqu’à ce qu’une condition d’arrêt soit rencontrée, l’instruction WHILE permet de répéter une séquence de commandes tant qu’une condition donnée reste vraie. La condition est évaluée avant chaque itération, ce qui signifie que la boucle peut ne jamais s’exécuter si la condition est fausse dès le départ.
[ <> ]
WHILE
LOOP
;
END LOOP [ ];
L’usage de l’instruction WHILE est idéal pour les cas où vous souhaitez qu’une condition détermine entièrement la durée d’exécution de la boucle. C’est une boucle conditionnelle avec un contrôle total sur les itérations.
Exemple :
declare
var_cpt number(5) := 0;
begin
while var_cpt < 10 loop
var_cpt := var_cpt + 1;
DBMS_OUTPUT.PUT_LINE('Compteur: ' || var_cpt);
end loop;
end;
Ici, la boucle WHILE continue de s’exécuter tant que la variable var_cpt est inférieure à 10. À chaque itération, la variable est incrémentée et sa valeur est affichée. La boucle s’arrête lorsque var_cpt atteint 10. Ce type de boucle est utile lorsque vous avez une condition bien définie pour arrêter l’exécution.
Boucles PL/SQL : Instruction FOR
Enfin, après avoir exploré les boucles LOOP et WHILE, nous abordons l’instruction FOR. Cette boucle est particulièrement efficace lorsque vous connaissez à l’avance le nombre exact d’itérations à effectuer. L’instruction FOR est utilisée pour répéter une séquence de commandes une fois pour chaque élément dans un intervalle défini par deux bornes.
L’instruction FOR est simple et structurée, car elle se base sur un indice qui parcourt un ensemble de valeurs, et vous pouvez choisir de parcourir l’intervalle dans l’ordre croissant ou décroissant à l’aide de l’option REVERSE.
[ <> ]
FOR IN [ REVERSE ] ..
LOOP
;
END LOOP [ ];
Cette syntaxe montre comment l’indice parcourt les valeurs dans l’intervalle défini par les bornes inférieure et supérieure. Le mot-clé REVERSE peut être utilisé pour inverser l’ordre de parcours.
Exemple :
declare
begin
for i in 1..5 loop
DBMS_OUTPUT.PUT_LINE('Itération: ' || i);
end loop;
end;
Dans cet exemple, la boucle FOR s’exécute 5 fois, avec l’indice i prenant successivement les valeurs de 1 à 5. À chaque itération, l’indice est affiché à l’aide de la procédure DBMS_OUTPUT.PUT_LINE. Cette boucle est idéale lorsque le nombre d’itérations est prédéterminé et qu’aucune condition supplémentaire n’est nécessaire pour arrêter la boucle.
Résumé des Boucles en PL/SQL
Dans cette section, nous avons exploré les trois principales instructions de boucles en PL/SQL :
Type de boucle | Description |
---|---|
LOOP | Utilisée pour répéter indéfiniment une séquence de commandes jusqu’à ce qu’une condition d’arrêt explicite soit rencontrée. |
WHILE | Une boucle conditionnelle qui continue de s’exécuter tant qu’une condition reste vraie. |
FOR | Utilisée lorsque le nombre d’itérations est prédéterminé et basé sur un intervalle défini. |
Tableau 1 : tableau résume les caractéristiques principales de chaque type de boucle en PL/SQL
Ces boucles sont des outils essentiels pour automatiser les tâches répétitives en PL/SQL, et leur utilisation efficace peut grandement améliorer la structure et la performance de votre code. En fonction de vos besoins, vous pouvez choisir entre une boucle simple et infinie avec LOOP, une boucle conditionnelle avec WHILE, ou une boucle structurée avec un nombre fixe d’itérations à l’aide de FOR.
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 fonctionne l'instruction LOOP en PL/SQL ?
Quand utiliser l'instruction WHILE en PL/SQL ?
Quelles sont les caractéristiques de l'instruction FOR en PL/SQL ?
Quelle est la différence entre les boucles LOOP et WHILE ?
Comment choisir entre LOOP, WHILE et FOR pour une tâche en PL/SQL ?
Conclusion
L’utilisation efficace des boucles en PL/SQL est essentielle pour automatiser les tâches répétitives. Quelle boucle pensez-vous intégrer dans vos prochains projets PL/SQL pour optimiser votre code?