Wat zijn loops?
Met lussen kan een bepaald deel van de code in een programma het gewenste aantal keren worden uitgevoerd.
In deze tutorial gaan we het lusconcept in PL / SQL en de controlestroom in lussen bekijken. Je zult leren-
- Inleiding tot Loops Concept
- Verklaringen voor lusregeling
- Soorten lussen in PL / SQL
- Basic Loop-instructie
- Etikettering van lussen
Inleiding tot Loops Concept
Loops-concept biedt het volgende voordeel bij het coderen.
- Herbruikbaarheid van code
- Verminderde codegrootte
- Gemakkelijke controle
- Verminderde complexiteit
Het onderstaande diagram toont het lusconcept op een picturale manier
In het bovenstaande diagram wordt de lusconditie gecontroleerd en zolang aan de lusconditie is voldaan, wordt het uitvoeringsblok uitgevoerd.
In elke iteratie moet de lusteller-variabele die feitelijk de lusconditie bepaalt, worden gewijzigd om de besturing uit de lus te laten treden. In sommige gevallen is deze lusteller-variabele een increment / decrement-operator voor een vooraf gedefinieerde telling, en in sommige gevallen is het een zoekvoorwaarde die het blok blijft uitvoeren totdat het voldoet.
Verklaringen voor lusregeling
Voordat u het lussenconcept leert, is het verplicht om kennis te nemen van lusbesturingsinstructies. Loop control statements zijn degene die feitelijk de stroom van uitvoering binnen de lus besturen. Hieronder vindt u de gedetailleerde beschrijving van de lusbesturingsverklaringen.
DOORGAAN MET
Dit sleutelwoord stuurt een instructie naar de PL / SQL-engine dat wanneer de PL / SQL-engine dit sleutelwoord in de lus tegenkomt, het de resterende code in het uitvoeringsblok van de code zal overslaan en de volgende iteratie onmiddellijk zal starten. Dit wordt voornamelijk gebruikt als de code in de lus voor bepaalde iteratiewaarden wil worden overgeslagen.
VERLATEN / VERLATEN WANNEER
Dit sleutelwoord stuurt een instructie naar de PL / SQL-engine die, wanneer de PL / SQL-engine dit sleutelwoord tegenkomt, onmiddellijk de huidige lus verlaat. Als de PL / SQL-engine de EXIT tegenkomt in een geneste lus, dan komt deze uit de lus waarin deze is gedefinieerd, dwz in een geneste lus, geeft EXIT in de binnenste lus alleen de controle uit de binnenste lus, maar niet van de buitenste lus. 'EXIT WHEN' wordt gevolgd door een uitdrukking die een Booleaans resultaat geeft. Als het resultaat WAAR is, zal de besturing VERLATEN.
GA NAAR
Deze instructie zal de controle overbrengen naar de gelabelde instructie ("GOTO
- Overdracht van controle is alleen mogelijk binnen de subprogramma's.
- Overdracht van controle is niet mogelijk van het uitzonderingsafhandelingsgedeelte naar het uitvoeringsgedeelte
Het gebruik van deze verklaring wordt niet aanbevolen, tenzij er geen andere alternatieven zijn, aangezien de traceerbaarheid van de codecontrole in het programma erg moeilijk zal zijn vanwege de overdracht van de controle van het ene onderdeel naar het andere.
Soorten lussen in PL / SQL
PL / SQL biedt de volgende drie soorten lussen
- Basic loop-instructie
- For loop-instructie
- While loop-instructie
Basic Loop-instructie
Deze lusinstructie is de eenvoudigste lusstructuur in PL / SQL. Het uitvoeringsblok begint met het trefwoord 'LOOP' en eindigt met het trefwoord 'END LOOP'.
De uitgangsvoorwaarde moet binnen dit uitvoeringsblok worden opgegeven, zodat de besturing de lus verlaat.
Het EXIT-sleutelwoord moet expliciet in het uitvoeringsgedeelte worden opgegeven om de lus te verlaten.
LOOPSyntaxis Uitleg:END LOOP;
- In de bovenstaande syntaxis markeert het sleutelwoord 'LOOP' het begin van de lus en 'END LOOP' het einde van de lus.
- Het uitvoeringsblok bevat alle code die moet worden uitgevoerd, inclusief de EXIT-voorwaarde.
- Het uitvoeringsgedeelte kan elke uitvoeringsverklaring bevatten.
Opmerking: Basic loop-instructie zonder EXIT-sleutelwoord is een INFINITE-LOOP die nooit zal stoppen.
Voorbeeld 1 : In dit voorbeeld gaan we een nummer van 1 tot 5 afdrukken met behulp van een basislus-instructie. Daarvoor voeren we de volgende code uit.
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:/
Code Verklaring:
- Coderegel 2 : de variabele 'a' declareren als 'NUMBER' datatype en deze initialiseren met waarde '1'.
- Coderegel 4 : Afdrukken van het statement "Programma gestart".
- Coderegel 5: trefwoord 'LOOP' markeert het begin van de lus.
- Coderegel 6: drukt de waarde van 'a' af.
- Coderegel 7: verhoogt de waarde van 'a' met +1.
- Coderegel 8: controleert of de waarde van 'a' groter is dan 5.
- Coderegel 9: Trefwoord 'END LOOP' markeert het einde van het uitvoeringsblok.
- De code van regel 6 tot regel 8 zal worden uitgevoerd tot 'a' de waarde 6 bereikt, aangezien de voorwaarde TRUE retourneert en de besturing de lus verlaat.
- Coderegel 10: Afdrukken van de verklaring "Programma voltooid"
Etikettering van lussen
In PL / SQL kunnen de loops worden gelabeld. Het label moet tussen "<<" en ">>" staan. Het labelen van lussen, met name in geneste luscodes, zorgt voor meer leesbaarheid. Het label kan worden gegeven in het EXIT-commando om die specifieke lus te verlaten. Met behulp van label kan de controle worden uitgevoerd om de buitenste lus van de geneste lussen direct te verlaten vanaf elke plek binnen de lussen, door het commando exit te geven gevolgd door het buitenste luslabel.
<Syntaxis Uitleg:>LOOP . < > LOOP --inner END LOOP; . END LOOP;
- In de bovenstaande syntaxis heeft de out-lus nog een lus erin.
- De '<
>' en '< >' zijn de labels van deze loops.
Voorbeeld 1 : In dit voorbeeld gaan we een nummer afdrukken vanaf 1 met behulp van de Basic loop-instructie. Elk nummer wordt zo vaak afgedrukt als de waarde ervan. De bovengrens van de reeks wordt vastgelegd op het programma-aangiftegedeelte. Laten we eens kijken hoe we het labelconcept kunnen gebruiken om dit te bereiken. Daarvoor voeren we de volgende code uit
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;/
Code Verklaring:
- Coderegel 2-3 : de variabele 'a' en 'b' declareren als 'NUMBER' datatype.
- Coderegel 4 : de variabele 'upper_limit' declareren als 'NUMBER' datatype met waarde '4'
- Coderegel 6 : Afdrukken van het statement "Programma gestart".
- Coderegel 7: De buitenste lus is gelabeld als "outer_loop"
- Coderegel 9: De waarde van 'a' wordt verhoogd met 1.
- Coderegel 11: Binnenste lus is gelabeld als "inner_loop".
- Coderegel 13: EXIT-voorwaarde die controleert of de waarde 'a' hoger is dan de waarde 'upper_limit'. Zo niet, dan gaat het verder, anders verlaat het de buitenste lus direct.
- Coderegel 14: Afdrukken van de waarde van 'b'.
- Coderegel 15: verhoogt de waarde van 'b' met +1.
- Coderegel 16: EXIT-voorwaarde die controleert of de waarde van 'b' hoger is dan 'a'. Als dit het geval is, verlaat het de besturing vanuit de binnenste lus.
- Coderegel 14: Afdrukken van de verklaring "Programma voltooid"
Overzicht
Lus | Basislus |
EXIT-criteria | Sluit af wanneer het trefwoord 'EXIT' in het uitvoeringsgedeelte wordt aangetroffen |
Gebruik | Goed te gebruiken als het verlaten niet op een bepaalde conditie is gebaseerd. |