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.

  • (I.e. Meilleur pour : Une boucle FOR convient mieux à un nombre d'itérations connu qu'à une condition ouverte.
  • (I.e. Plage : Une limite inférieure et une limite supérieure définissent le nombre de fois où la boucle s'exécute.
  • ⚙️ Contre implicite : La variable de boucle est déclarée automatiquement et s'incrémente d'elle-même.
  • (I.e. Portée: La variable de boucle n'existe qu'à l'intérieur de la boucle.
  • (I.e. INVERSE: L'ajout de REVERSE avant la limite inférieure permet à la boucle de décompter.
  • 🪜 Imbriqué : Les boucles peuvent être imbriquées, et la boucle interne s'exécute entièrement pour chaque itération externe.
  • 🚪 Sortie automatique : La boucle se termine automatiquement lorsque la variable sort de la plage définie.

Oracle Boucle For PL/SQL

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.

Boucle FOR affichant les nombres de 1 à 5

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.

Structure de boucle imbriquée

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.

Exemple de boucle FOR imbriquée, partie 1

Exemple de boucle FOR imbriquée, partie 2

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.

FAQ

Non. La boucle FOR déclare sa variable implicitement, et celle-ci n'existe qu'à l'intérieur de la boucle. Déclarer une variable du même nom à l'extérieur n'a aucune incidence sur celle utilisée par la boucle.

L'option REVERSE inverse le sens de la boucle, de la limite supérieure à la limite inférieure. Les limites restent écrites de la plus basse à la plus haute ; seul l'ordre de parcours des valeurs est inversé.

Utilisez une boucle FOR lorsque le nombre d'itérations est connu à l'avance, par exemple dans un intervalle fixe. Utilisez une boucle WHILE lorsque la boucle doit se poursuivre tant qu'une condition est remplie et que le nombre d'itérations n'est pas fixe.

Oui, lorsque la boucle de base compte simplement entre deux valeurs fixes. L'IA peut remplacer le compteur manuel et la sortie par une boucle FOR, ce qui raccourcit le code. Vérifiez que les limites correspondent à celles d'origine.

Non. La variable de boucle est en lecture seule à l'intérieur de la boucle ; toute affectation à cette variable provoque donc une erreur de compilation. Pour modifier le flux d'exécution, utilisez une variable distincte ou sortez de la boucle avec `EXIT`.

Résumez cet article avec :