Que sont les boucles?
Loops permet à une certaine partie du code d'un programme d'être exécutée le nombre de fois souhaité.
Dans ce tutoriel, nous allons voir le concept de boucle en PL / SQL et le flux de contrôle en boucles. Tu vas apprendre-
- Introduction au concept de boucles
- Déclarations de contrôle de boucle
- Types de boucle en PL / SQL
- Déclaration de boucle de base
- Étiquetage des boucles
Introduction au concept de boucles
Le concept de boucles offre l'avantage suivant dans le codage.
- Réutilisabilité du code
- Taille de code réduite
- Contrôle facile
- Complexité réduite
Le diagramme ci-dessous montre le concept de boucle de manière illustrée
Dans le diagramme ci-dessus, la condition de boucle sera vérifiée, et tant que la condition de boucle est satisfaite, le bloc d'exécution sera exécuté.
À chaque itération, la variable de compteur de boucle qui décide réellement de la condition de la boucle doit être modifiée pour que le contrôle sorte de la boucle. Dans certains cas, cette variable de compteur de boucle est un opérateur d'incrémentation / décrémentation pour un décompte prédéfini, et dans certains cas, c'est une condition de recherche qui continue d'exécuter le bloc jusqu'à ce qu'il le satisfasse.
Déclarations de contrôle de boucle
Avant d'apprendre le concept de boucles, il est obligatoire d'apprendre les instructions de contrôle de boucle. Les instructions de contrôle de boucle sont celles qui contrôlent réellement le flux d'exécution à l'intérieur de la boucle. Vous trouverez ci-dessous la description détaillée des instructions de contrôle de boucle.
CONTINUEZ
Ce mot-clé envoie une instruction au moteur PL / SQL que chaque fois que le moteur PL / SQL rencontre ce mot-clé à l'intérieur de la boucle, alors il sautera le code restant dans le bloc d'exécution du code, et la prochaine itération commencera immédiatement. Cela sera principalement utilisé si le code à l'intérieur de la boucle veut être ignoré pour certaines valeurs d'itération.
QUITTER / QUITTER QUAND
Ce mot-clé envoie une instruction au moteur PL / SQL qui chaque fois que le moteur PL / SQL rencontre ce mot-clé, il sort immédiatement de la boucle en cours. Si le moteur PL / SQL rencontre EXIT dans une boucle imbriquée, alors il sortira de la boucle dans laquelle il a été défini, c'est-à-dire dans une boucle imbriquée, donner EXIT dans la boucle interne sortira uniquement du contrôle de la boucle interne mais pas de la boucle extérieure. 'EXIT WHEN' est suivi d'une expression qui donne un résultat booléen. Si le résultat est TRUE, le contrôle sortira.
ALLER À
Cette instruction transférera le contrôle à l'instruction étiquetée ("GOTO
- Le transfert de contrôle ne peut se faire qu'au sein des sous-programmes.
- Le transfert de contrôle ne peut pas être effectué de la partie gestion des exceptions à la partie exécution
L'utilisation de cette déclaration n'est pas recommandée sauf s'il n'y a pas d'autres alternatives, car la traçabilité du contrôle de code sera très difficile dans le programme en raison du transfert de contrôle d'une partie à une autre partie.
Types de boucle en PL / SQL
PL / SQL fournit les trois types de boucles suivants
- Instruction de boucle de base
- Instruction de boucle For
- Instruction de boucle While
Déclaration de boucle de base
Cette instruction de boucle est la structure de boucle la plus simple en PL / SQL. Le bloc d'exécution commence par le mot-clé «LOOP» et se termine par le mot-clé «END LOOP».
La condition de sortie doit être donnée à l'intérieur de ce bloc d'exécution pour que le contrôle sorte de la boucle.
Il faut que le mot clé EXIT soit donné explicitement dans la partie exécution pour sortir de la boucle.
LOOPExplication de la syntaxe:END LOOP;
- Dans la syntaxe ci-dessus, le mot clé 'LOOP' marque le début de la boucle et 'END LOOP' marque la fin de la boucle.
- Le bloc d'exécution contient tout le code à exécuter, y compris la condition EXIT.
- La partie exécution peut contenir n'importe quelle instruction d'exécution.
Remarque: une instruction de boucle de base sans mot-clé EXIT sera une BOUCLE INFINIE qui ne s'arrêtera jamais.
Exemple 1 : Dans cet exemple, nous allons imprimer le nombre de 1 à 5 en utilisant une instruction de boucle de base. Pour cela, nous allons exécuter le code suivant.
DECLAREa NUMBER:=1;BEGINdbms_output.put_line('Program started.');LOOPdbms_output.put_line(a);a:=a+1;EXIT WHEN a>5;END LOOP;dbms_output.put_line('Program completed');END:/
Explication du code:
- Ligne de code 2 : déclarer la variable 'a' comme type de données 'NUMBER' et l'initialiser avec la valeur '1'.
- Ligne de code 4 : impression de l'instruction "Programme démarré".
- Ligne de code 5: le mot - clé 'LOOP' marque le début de la boucle.
- Ligne de code 6: imprime la valeur de «a».
- Ligne de code 7: incrémente la valeur de «a» de +1.
- Ligne de code 8: vérifie si la valeur de 'a' est supérieure à 5.
- Ligne de code 9: Le mot - clé 'END LOOP' marque la fin du bloc d'exécution.
- Le code de la ligne 6 à la ligne 8 continuera à s'exécuter jusqu'à ce que «a» atteigne la valeur 6, car la condition retournera TRUE, et le contrôle sortira de la boucle.
- Ligne de code 10: Impression de la déclaration «Programme terminé»
Étiquetage des boucles
En PL / SQL, les boucles peuvent être étiquetées. L'étiquette doit être placée entre "<<" et ">>". L'étiquetage des boucles, en particulier dans les codes de boucle imbriqués, donnera plus de lisibilité. L'étiquette peut être donnée dans la commande EXIT pour sortir de cette boucle particulière. En utilisant label, le contrôle peut être amené à sortir directement de la boucle externe des boucles imbriquées à partir de n'importe quel endroit à l'intérieur des boucles, en donnant la commande exit suivie du label de boucle externe.
<Explication de la syntaxe:>LOOP . < > LOOP --inner END LOOP; . END LOOP;
- Dans la syntaxe ci-dessus, la boucle out contient une autre boucle.
- Les '<
>' et '< >' sont les étiquettes de ces boucles.
Exemple 1 : Dans cet exemple, nous allons imprimer le nombre à partir de 1 en utilisant l'instruction de boucle de base. Chaque numéro sera imprimé autant de fois que sa valeur. La limite supérieure de la série est fixée à la partie déclaration du programme. Apprenons comment nous pouvons utiliser le concept d'étiquette pour y parvenir. Pour cela, nous allons exécuter le code suivant
DECLAREa NUMBER:=0;b NUMBER;upper-limit NUMBER :=4;BEGINdbms_output.put_line(‘Program started.' );«outerloop» LOOPa:=a+1;b:=l;«inner loop»LOOPEXIT outer_loop WHEN a > upper_limit;dbms_output.put_line(a);b:=b+l;EXIT inner_loop WHEN b>a;END LOOP;END LOOP;dbms_output.put_line('Program completed.');END;/
Explication du code:
- Ligne de code 2-3 : déclaration de la variable «a» et «b» comme type de données «NUMBER».
- Ligne de code 4 : déclarer la variable 'limite_supérieure' comme type de données 'NUMBER' avec la valeur '4'
- Ligne de code 6 : impression de l'instruction "Programme démarré".
- Ligne de code 7: la boucle externe a été étiquetée comme "boucle_externe"
- Ligne de code 9: la valeur de 'a' est incrémentée de 1.
- Ligne de code 11: La boucle interne a été étiquetée comme "boucle_intérieure".
- Ligne de code 13: condition EXIT qui vérifie si la valeur «a» est supérieure à la valeur «limite_supérieure». Sinon, il ira plus loin, sinon il sort directement de la boucle externe.
- Ligne de code 14: impression de la valeur de «b».
- Ligne de code 15: incrémente la valeur de «b» de +1.
- Ligne de code 16: condition EXIT qui vérifie si la valeur de «b» est supérieure à «a». Si tel est le cas, il quittera le contrôle de la boucle interne.
- Ligne de code 14: Impression de l'instruction "Programme terminé"
Résumé
Boucle | Boucle de base |
Critère de sortie | Quitter lorsque rencontre le mot-clé 'EXIT' dans la partie exécution |
Usage | Bon à utiliser lorsque la sortie n'est basée sur aucune condition particulière. |