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.

  • (I.e. Objectif : Une boucle WHILE s'exécute tant qu'une condition est vraie et s'arrête dès qu'elle devient fausse.
  • (I.e. Contrôle d'entrée : La condition est testée avant le bloc, la boucle peut donc s'exécuter zéro fois.
  • 🧮 Aucune sortie nécessaire : La condition est validée implicitement à chaque itération, donc aucune sortie explicite n'est requise.
  • (I.e. Compteur: Une variable à l'intérieur du bloc doit changer pour que la condition finisse par devenir fausse.
  • Risque infini : Si le compteur ne manque jamais la condition, la boucle s'exécute indéfiniment.
  • contre POUR : Utilisez WHILE lorsque le nombre d'itérations est inconnu, et FOR lorsqu'il est fixe.
  • 🚪 Sortie anticipée : L'instruction EXIT WHEN permet de quitter une boucle WHILE avant que la condition ne devienne fausse.

Oracle Boucle While PL/SQL

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.

Exemple de boucle While PL/SQL
Exemple de boucle While PL/SQL
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.

FAQ

Oui. Puisque la condition est vérifiée avant le bloc, si elle est fausse au départ, le corps du bloc n'est jamais exécuté. Cette vérification à l'entrée constitue la principale différence avec une boucle classique, qui s'exécute toujours une seule fois.

Assurez-vous qu'une variable à l'intérieur de la boucle évolue vers la condition de sortie à chaque itération. L'ajout d'une instruction EXIT WHEN sur un nombre maximal constitue une sécurité utile pour les boucles pilotées par les données.

Utilisez WHILE lorsque le nombre d'itérations est inconnu et dépend d'une condition. Utilisez FOR lorsque vous bouclez sur une plage fixe, car son compteur est géré automatiquement.

Souvent. L'IA peut vérifier si la variable de contrôle se rapproche de la condition de sortie et émettre un avertissement dans le cas contraire. Une boucle dont la sortie dépend de données en temps réel nécessite tout de même un test pour en être certaine.

Oui. Bien qu'une boucle WHILE s'arrête lorsque sa condition finale devient fausse, une instruction EXIT ou EXIT WHEN à l'intérieur du corps de la boucle peut permettre de l'interrompre prématurément, ce qui est pratique pour sortir de la boucle dans un cas particulier.

Résumez cet article avec :