Terwijl Loop in Oracle PL/SQL met voorbeeld

โšก Slimme samenvatting

Oracle Een PL/SQL WHILE-lus herhaalt een codeblok zolang een voorwaarde waar blijft. Het is een lus die de exit-voorwaarde controleert vรณรณr elke iteratie, waardoor het codeblok nul keer kan worden uitgevoerd en er geen expliciet EXIT-sleutelwoord nodig is.

  • ๐Ÿ” Doel: Een WHILE-lus wordt uitgevoerd zolang een voorwaarde waar is en stopt zodra deze onwaar is.
  • ๐Ÿšฆ Toegangscontrole: De voorwaarde wordt vรณรณr het codeblok gecontroleerd, waardoor de lus nul keer kan worden uitgevoerd.
  • ๐Ÿงฎ Geen uitgang nodig: De voorwaarde wordt bij elke iteratie impliciet gevalideerd, dus een expliciete EXIT is niet nodig.
  • ๐Ÿ”ข teller: Een variabele binnen het codeblok moet veranderen, zodat de voorwaarde uiteindelijk onwaar wordt.
  • ๏ธ Oneindig risico: Als de teller nooit aan de voorwaarde niet voldoet, blijft de lus oneindig draaien.
  • โ€‹ vs VOOR: Gebruik WHILE wanneer het aantal iteraties onbekend is en FOR wanneer het vaststaat.
  • ๐Ÿšช Vroegtijdig vertrek: EXIT WHEN kan een WHILE-lus nog steeds verlaten voordat de voorwaarde onwaar wordt.

Oracle PL/SQL While-lus

Wat is een PL/SQL While-lus?

De Herhalingslus In PL/SQL werkt een lus vergelijkbaar met een standaard lus, met als enige verschil dat de exit-voorwaarde zich aan het begin van de lus bevindt. Het werkt als een lus met een ingangscontrole, waarbij het uitvoeringsblok alleen wordt uitgevoerd als aan de voorwaarde is voldaan, omdat de exit-voorwaarde vรณรณr de uitvoering wordt gecontroleerd.

Het is niet nodig om expliciet het trefwoord 'EXIT' te gebruiken om de lus te verlaten, omdat de voorwaarde elke keer impliciet wordt gevalideerd.

PL/SQL While-lus-syntaxis

WHILE <EXIT condition>
LOOP
<execution block starts>
.
.
.
<execution_block_ends>
END LOOP;
  • Het sleutelwoord 'WHILE' markeert het begin van de lus en 'END LOOP' markeert het einde.
  • De exitvoorwaarde wordt telkens gecontroleerd voordat het uitvoeringsgedeelte begint.
  • Het uitvoeringsblok bevat alle code die moet worden uitgevoerd.
  • Het uitvoeringsgedeelte kan elke uitvoerbare instructie bevatten.

Voorbeeld Oracle PL/SQL While-lus

In dit voorbeeld printen we de getallen van 1 tot en met 5 met behulp van een WHILE-lus.

PL/SQL While-lusvoorbeeld
PL/SQL While-lusvoorbeeld
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 Uitleg:

  • Code lijn 2: De variabele 'a' declareren als 'NUMBER' en initialiseren met de waarde '1'.
  • Code lijn 4: De melding "Programma gestart" wordt afgedrukt.
  • Code lijn 5: Het sleutelwoord 'WHILE' markeert het begin van de lus en controleert of de waarde van 'a' kleiner dan of gelijk aan 5 is.
  • Code lijn 7: Drukt de waarde van 'a' af.
  • Code lijn 8: Verhoogt de waarde van 'a' met 1.
  • Code lijn 9: Het trefwoord 'END LOOP' markeert het einde van het uitvoeringsblok.
  • Regels 7 en 8 worden uitgevoerd totdat 'a' de waarde 6 bereikt, waarna de voorwaarde FALSE retourneert en de uitvoering stopt. lus.
  • Code lijn 10: Het bericht "Programma voltooid" afdrukken.

WHILE-lus versus FOR-lus versus eenvoudige lus

PL/SQL biedt drie soorten lussen, en het kiezen van de juiste zorgt voor overzichtelijke code. De WHILE-lus is geschikt voor herhaling op basis van een voorwaarde, terwijl de andere twee geschikt zijn voor een vast aantal herhalingen of een expliciet gecontroleerde exit.

Ringleiding Uitgangscriteria Het beste te gebruiken wanneer
WHILE-lus De voorwaarde bovenaan wordt onjuist. Het aantal iteraties is onbekend.
For loop De teller bereikt het einde van het bereik. Het aantal iteraties is bekend.
Basislus Expliciete EXIT in het blok De uitgang wordt handmatig bediend.

Omdat de WHILE-lus de voorwaarde aan het begin controleert, kan de lusbody nul keer worden uitgevoerd als de voorwaarde vanaf het begin onwaar is. Dit is het belangrijkste verschil met een eenvoudige lus, waarvan de lusbody altijd minstens รฉรฉn keer wordt uitgevoerd.

Een oneindige while-lus vermijden

Een WHILE-lus is volledig afhankelijk van de sturende variabele die naar de exit-conditie beweegt. Als dat nooit gebeurt, blijft de lus oneindig draaien en loopt de sessie vast. Drie gewoonten voorkomen dit:

  • Verander de teller bij elke iteratie. In het voorbeeld wordt 'a' binnen de lus verhoogd; als die regel wordt verwijderd, blijft de lus oneindig doorlopen.
  • Test de grens. Bevestig dat de voorwaarde daadwerkelijk onwaar kan worden voor de beginwaarde, en niet alleen in een ideaal geval.
  • Voeg een veiligheidsuitgang toe wanneer... Bij een datagestuurde lus fungeert een EXIT WHEN bij een maximaal aantal iteraties als een beveiliging tegen een onverwachte waarde.

Als het aantal herhalingen vaststaat, elimineert een FOR-lus het risico volledig, omdat de teller automatisch wordt beheerd.

Veelgestelde vragen

Ja. Omdat de voorwaarde vรณรณr het codeblok wordt gecontroleerd, wordt de code nooit uitgevoerd als deze aan het begin onwaar is. Deze controle aan het begin is het belangrijkste verschil met een standaardlus, die altijd eenmaal wordt uitgevoerd.

Zorg ervoor dat een variabele binnen de lus bij elke iteratie verandert in de richting van de exit-voorwaarde. Het toevoegen van een EXIT WHEN-instructie bij een maximumaantal is een nuttig vangnet voor datagestuurde lussen.

Gebruik WHILE wanneer het aantal iteraties niet bekend is en afhangt van een voorwaarde. Gebruik FOR wanneer je door een vast bereik loopt, omdat de teller daarvan automatisch wordt beheerd.

Vaak wel. AI kan controleren of de sturende variabele zich richting de exit-conditie beweegt en waarschuwen wanneer dit niet het geval is. Een lus waarvan de exit afhankelijk is van live data, heeft nog steeds een test nodig om zekerheid te krijgen.

Ja. Hoewel een WHILE-lus stopt wanneer de bovenste voorwaarde onwaar wordt, kan een EXIT- of EXIT WHEN-instructie binnen de lus ervoor zorgen dat deze eerder wordt verlaten, wat handig is om in een speciaal geval de lus te onderbreken.

Vat dit bericht samen met: