Oracle PL/SQL POUR BOUCLE avec exemple
⚡ Résumé intelligent
Oracle La boucle FOR en PL/SQL exécute un bloc de code un nombre de fois déterminé entre une limite inférieure et une limite supérieure. La variable de boucle est déclarée implicitement et s'incrémente automatiquement ; aucun compteur manuel n'est donc nécessaire. Le mot-clé REVERSE permet d'inverser le comptage.
Qu'est-ce qu'une boucle FOR ?
L'instruction « FOR LOOP » est particulièrement adaptée lorsque vous souhaitez exécuter du code un nombre de fois connu, plutôt qu'en fonction d'une autre condition.
Dans cette boucle, une limite inférieure et une limite supérieure sont spécifiées, et tant que la variable de boucle se situe dans cette plage, la boucle est exécutée.
La variable de boucle s'incrémente automatiquement ; aucune opération d'incrémentation explicite n'est donc nécessaire. Il n'est pas nécessaire de la déclarer, car elle est déclarée implicitement.
FOR <loop_variable> in <lower_limit> .. <higher_limit> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
Explication de la syntaxe :
- Le mot-clé « FOR » marque le début de la boucle et « END LOOP » marque la fin.
- La variable de boucle est évaluée à chaque itération avant l'exécution de la partie relative à cette exécution.
- Le bloc d'exécution contient tout le code qui doit être exécuté et peut contenir n'importe quelle instruction exécutable.
- La variable de boucle est déclarée implicitement lors de l'exécution de la boucle, et sa portée se limite à l'intérieur de la boucle.
- Lorsque la variable de boucle sort de sa plage de valeurs, le contrôle quitte la boucle.
- Il est possible de faire fonctionner la boucle en sens inverse en ajoutant le mot-clé 'REVERSE' avant lower_limit.
Exemple 1: Dans cet exemple, nous affichons les nombres de 1 à 5 à l'aide d'une boucle FOR.
BEGIN dbms_output.put_line('Program started.'); FOR a IN 1 .. 5 LOOP dbms_output.put_line(a); END LOOP; dbms_output.put_line('Program completed.'); END; /
Code Explication:
- Code ligne 2: Impression du message « Programme démarré ».
- Code ligne 3: Le mot-clé « FOR » marque le début de la boucle et la variable de boucle « a » est déclarée. Elle prend désormais les valeurs de 1 à 5.
- Code ligne 5: Imprime la valeur de « a ».
- Code ligne 6: Le mot-clé « END LOOP » marque la fin du bloc d'exécution.
- La ligne 5 continue de s'exécuter jusqu'à ce que 'a' atteigne la valeur 6, auquel cas la condition échoue et le contrôle sort de la boucle.
- Code ligne 7: Impression du message « Programme terminé ».
Boucles imbriquées
Les boucles peuvent être imbriquées. Les boucles externe et interne peuvent être de types différents. Dans une boucle imbriquée, à chaque itération de la boucle externe, la boucle interne s'exécute intégralement.
LOOP --outer <execution block starts> LOOP --inner <execution_part> END LOOP; <execution_block_ends> END LOOP;
Explication de la syntaxe :
- La boucle extérieure contient une autre boucle à l'intérieur.
- Les boucles peuvent être de n'importe quel type, et leur fonctionnalité d'exécution est la même.
Exemple 1: Dans cet exemple, nous affichons les nombres de 1 à 3 à l'aide d'une boucle FOR. Chaque nombre est affiché autant de fois que sa valeur.
DECLARE b NUMBER; BEGIN dbms_output.put_line('Program started'); FOR a IN 1..3 LOOP b:= 1; WHILE (a>=b) LOOP dbms_output.put_line(a); b:= b+1; END LOOP; END LOOP; dbms_output.put_line('Program completed'); END; /
Code Explication:
- Code ligne 2: Déclaration de la variable 'b' comme type de données 'NUMBER'.
- Code ligne 4: Impression du message « Programme démarré ».
- Code ligne 5: Le mot-clé « FOR » marque le début de la boucle et la variable de boucle « a » est déclarée. Elle prend désormais les valeurs de 1 à 3.
- Code ligne 7: Réinitialisation de la valeur de « b » à « 1 » à chaque fois.
- Code ligne 8: L'intérieur boucle tout en vérifie la condition a>=b.
- Code ligne 10: Imprime la valeur de « a » tant que la condition ci-dessus est satisfaite.
- Code ligne 14: Impression du message « Programme terminé ».
Boucle FOR et boucle FOR inversée
Par défaut, une boucle FOR compte de la limite inférieure à la limite supérieure. L'ajout du mot-clé REVERSE permet de compter à rebours tout en conservant la valeur initiale.ping Les limites sont dans le même ordre. Les deux formes sont présentées ensemble ci-dessous afin de mettre en évidence la différence.
| Forme | En-tête | Ordre des valeurs |
|---|---|---|
| Ascendant | POUR un DANS 1 .. 5 | 1, 2, 3, 4, 5 |
| Descendant | POUR un INVERSE 1 .. 5 | 5, 4, 3, 2, 1 |
Notez que même avec REVERSE, la limite inférieure est toujours écrite avant la limite supérieure ; seul le sens d’itération change. Pour les boucles dont le nombre d’itérations n’est pas connu à l’avance, boucle de base est le meilleur choix.





