En boucle Oracle PL/SQL avec exemple
⚡ Résumé intelligent
Oracle La boucle WHILE de PL/SQL répète un bloc de code tant qu'une condition est vraie. Il s'agit d'une boucle avec vérification d'entrée, testant la condition de sortie avant chaque itération ; le bloc peut donc ne jamais s'exécuter et le mot-clé EXIT n'est pas nécessaire.

Qu'est-ce qu'une boucle While PL/SQL ?
Le Alors que la boucle En PL/SQL, son fonctionnement est similaire à celui d'une boucle classique, à ceci près que la condition de sortie est définie au tout début de la boucle. Elle fonctionne comme une boucle avec vérification d'entrée : le bloc d'exécution ne s'exécute que si la condition est satisfaite, car la condition de sortie est vérifiée avant l'exécution.
Il n'est pas nécessaire d'utiliser explicitement le mot-clé « EXIT » pour sortir de la boucle, car la condition est validée implicitement à chaque itération.
Syntaxe de la boucle While PL/SQL
WHILE <EXIT condition> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
- Le mot-clé « WHILE » marque le début de la boucle et « END LOOP » marque la fin.
- La condition de sortie est évaluée à chaque fois avant le début de l'exécution.
- Le bloc d'exécution contient tout le code qui doit être exécuté.
- La partie exécution peut contenir n'importe quelle instruction exécutable.
Exemple de Oracle Boucle While PL/SQL
Dans cet exemple, nous affichons les nombres de 1 à 5 à l'aide d'une boucle WHILE.

DECLARE a NUMBER := 1; BEGIN dbms_output.put_line('Program started'); WHILE (a <= 5) LOOP dbms_output.put_line(a); a:= a+1; END LOOP; dbms_output.put_line('Program completed'); END; /
Code Explication:
- Code ligne 2: Déclarer la variable 'a' comme 'NUMBER' et l'initialiser avec la valeur '1'.
- Code ligne 4: Impression du message « Programme démarré ».
- Code ligne 5: Le mot-clé 'WHILE' marque le début de la boucle et vérifie si la valeur de 'a' est inférieure ou égale à 5.
- Code ligne 7: Imprime la valeur de « a ».
- Code ligne 8: Incrémente la valeur de 'a' de 1.
- Code ligne 9: Le mot-clé « END LOOP » marque la fin du bloc d'exécution.
- Les lignes 7 et 8 continuent de s'exécuter jusqu'à ce que 'a' atteigne la valeur 6, auquel cas la condition renvoie FAUX et le contrôle quitte le programme. boucle.
- Code ligne 10: Impression du message « Programme terminé ».
Boucle WHILE vs Boucle FOR vs Boucle de base
PL/SQL propose trois types de boucles, et choisir la bonne permet de conserver un code clair. La boucle WHILE convient à une répétition conditionnelle, tandis que les deux autres conviennent à un nombre d'itérations fixe ou à une sortie explicitement contrôlée.
| boucle | Critère de sortie | Meilleur utilisé lorsque |
|---|---|---|
| boucle WHILE | La condition en haut devient fausse | Le nombre d'itérations est inconnu |
| Boucle POUR | Le compteur atteint l'extrémité de la portée | Le nombre d'itérations est connu |
| Boucle de base | Sortie explicite dans le bloc | La sortie est contrôlée manuellement |
Comme la boucle WHILE teste sa condition au début, son corps peut ne jamais s'exécuter si la condition est fausse dès le départ. C'est la principale différence avec une boucle classique, dont le corps s'exécute toujours au moins une fois.
Éviter une boucle while infinie
Une boucle WHILE dépend entièrement du fait que la variable de contrôle se rapproche de la condition de sortie. Si ce n'est jamais le cas, la boucle s'exécute indéfiniment et la session se bloque. Trois habitudes permettent d'éviter cela :
- Modifier le compteur à chaque itération. L'exemple incrémente la valeur de 'a' à l'intérieur de la boucle ; supprimer cette ligne entraînerait une boucle infinie.
- Tester la limite. Vérifiez que la condition peut effectivement devenir fausse pour la valeur initiale, et pas seulement dans un cas idéal.
- Ajouter une sortie de secours quand. Dans une boucle pilotée par les données, une instruction EXIT WHEN sur un nombre maximal d'itérations sert de protection contre une valeur inattendue.
Lorsque le nombre de répétitions est réellement fixe, une boucle FOR élimine totalement le risque, car son compteur est géré automatiquement.
