Zoals alle grote programmeertalen ondersteunt PL/SQL loops waarmee een reeks instructies kan worden herhaald totdat aan een bepaalde voorwaarde is voldaan.
In deze zelfstudie onderzoeken we het gebruik van de LOOP-instructie in PL/SQL om herhaaldelijk een codeblok uit te voeren.
Oracle-lussen
De PL/SQL-taal ondersteunt de verschillende lusconstructies zoals 'for'-lus en 'while'-lussen. We kunnen de syntaxis van een generieke lus in Oracle uitdrukken, zoals hieronder wordt weergegeven:
<< etiket >> LUS
loop_statement;
EINDE LOOP loop_label;
Dit bevat het sleutelwoord LOOP en de hoofdtekst van de uit te voeren lus en is ingesloten met het sleutelwoord END LOOP.
Het LOOP-blok voert de gedefinieerde acties uit en stuurt de besturing na voltooiing terug naar de bovenste lus-clausule. Dit is meestal ingesloten in een EXIT- of EXIT WHEN-clausule om de lus te beëindigen nadat aan een specifieke voorwaarde is voldaan. Dit helpt de oneindige lussen te voorkomen.
Oracle For Loop-syntaxis:
Het volgende toont de syntaxis van een 'for'-lus in PL/SQL:
BEGINNENFOR loop_variable IN [ondergrens..bovengrens] LOOP
-- code die in de lus moet worden uitgevoerd
EINDE LUS;
EINDE;
Met de loop_variable kunt u een lus definiëren die wordt gebruikt om de lus en de onder- en bovengrenzen te regelen. De boven- en ondergrenzen specificeren de bereikwaarden waar de lusevaluatie plaatsvindt.
Oracle While-lussen
We kunnen ook de 'while'-lussen in PL/SQL definiëren, zoals blijkt uit de volgende syntaxis:
BEGINNENWHILE-voorwaarde LOOP
-- lus actie
EINDE LUS;
EINDE;
In een 'while'-lus wordt de lusactie herhaaldelijk uitgevoerd terwijl de voorwaarde waar is.
Oracle-cursor voor lussen
Oracle ondersteunt ook de 'cursor voor' loops waarmee we een set instructies kunnen uitvoeren voor elke rij in een bepaalde resultatenset. De syntaxis kan als volgt worden uitgedrukt:
BEGINNENFOR loop_variable IN (SELECTEER kolom1, kolom2, ...
VAN tafel1, tafel2, ...
WHERE-voorwaarde) LOOP
-- lus actie
EINDE LUS;
EINDE;
Voorbeeldlussen in Oracle
De volgende voorbeelden behandelen de basisprincipes van het werken met for-, while- en for-cursorlussen in Oracle.
Oracle For Loop-voorbeeld:
Dit voorbeeld laat zien hoe u een 'for'-lus gebruikt om de getallen van 1 tot 10 af te drukken.
BEGINNENVOOR i IN 1..10 LUS
DBMS_OUTPUT.PUT_LINE(i);
EINDE LUS;
EINDE;
Voorbeeld van While-lus:
We kunnen een vergelijkbare actie uitvoeren met een while-lus, zoals hieronder wordt weergegeven:
BEGINNENVERKLAREN
i AANTAL := 1;
BEGINNEN
WHILE i <= 10 LUS
DBMS_OUTPUT.PUT_LINE(i);
ik := ik + 1;
EINDE LUS;
EINDE;
EINDE;
Dit zou een soortgelijke actie moeten uitvoeren als de 'for' -lus.
Cursor voor lusvoorbeeld:
Hieronder ziet u hoe u de 'cursor voor'-lus gebruikt om de volledige naam van een klant te krijgen:
BEGINNENVOOR medewerker IN (SELECT voornaam, achternaam
VAN medewerkers) LOOP
DBMS_OUTPUT.PUT_LINE(werknemer.voornaam || ' ' || medewerker.achternaam);
EINDE LUS;
EINDE;
Voorbeelduitvoer:
Conclusie
In dit bericht kwam u drie hoofdtypen lussen tegen in de Oracle PL/SQL-taal. U kunt de documentatie raadplegen om verder te verkennen.