Som alle store programmeringsspråk, støtter PL/SQL løkker som gjør at et sett med instruksjoner kan gjentas til en viss betingelse er oppfylt.
I denne opplæringen vil vi utforske bruken av LOOP-setningen i PL/SQL for å gjentatte ganger utføre en kodeblokk.
Oracle Loops
PL/SQL-språket støtter de forskjellige loop-konstruksjonene som 'for' loop og 'while' loops. Vi kan uttrykke syntaksen til en generisk løkke i Oracle som vist i følgende:
<< merkelapp >> LØKKE
loop_statement;
END LOOP loop_label;
Dette inneholder nøkkelordet LOOP og hoveddelen av løkken som skal utføres, og er vedlagt nøkkelordet END LOOP.
LOOP-blokken kjører de definerte handlingene og returnerer kontrollen til toppløkkeleddet etter fullføring. Dette er vanligvis innelukket i en EXIT- eller EXIT WHEN-klausul for å avslutte sløyfen etter at en bestemt betingelse er oppfylt. Dette bidrar til å forhindre de uendelige løkkene.
Oracle For Loop Syntaks:
Følgende viser syntaksen til en 'for'-løkke i PL/SQL:
BEGYNNEFOR loop_variable IN [lower_bound..upper_bound] LOOP
-- kode som skal kjøres i loopen
END LOOP;
SLUTT;
Loop_variablen lar deg definere en loop som brukes til å kontrollere loopen og de nedre og øvre grensene. De øvre og nedre grensene spesifiserer områdeverdiene der loopevalueringen finner sted.
Oracle While Loops
Vi kan også definere 'mens'-løkkene i PL/SQL som demonstrert av følgende syntaks:
BEGYNNEMENS tilstand LOOP
-- loop handling
END LOOP;
SLUTT;
I en 'while'-løkke utføres loop-handlingen gjentatte ganger mens betingelsen er sann.
Oracle Cursor For Loops
Oracle støtter også 'markør for'-løkkene som gjør oss i stand til å utføre et sett med instruksjoner for hver rad i et gitt resultatsett. Syntaksen kan uttrykkes som følger:
BEGYNNEFOR loop_variable IN (VELG kolonne1, kolonne2, ...
FRA tabell1, tabell2, ...
WHERE tilstand) LOOP
-- loop handling
END LOOP;
SLUTT;
Eksempelsløyfer i Oracle
Følgende eksempler dekker det grunnleggende om å jobbe med for, while og for markørløkker i Oracle.
Oracle For Loop Eksempel:
Dette eksemplet viser hvordan du bruker en 'for'-løkke for å skrive ut tallene fra 1 til 10.
BEGYNNEFOR i IN 1..10 LOOP
DBMS_OUTPUT.PUT_LINE(i);
END LOOP;
SLUTT;
Eksempel på mensløkke:
Vi kan utføre en lignende handling ved å bruke en while-løkke som vist i følgende:
BEGYNNEERKLÆRE
i ANTALL := 1;
BEGYNNE
MENS i <= 10 LOOP
DBMS_OUTPUT.PUT_LINE(i);
i:= i + 1;
END LOOP;
SLUTT;
SLUTT;
Dette bør utføre en lignende handling som 'for'-løkken.
Markør for sløyfe eksempel:
Følgende viser hvordan du bruker 'markør for'-løkken for å få en kundes fulle navn:
BEGYNNEFOR ansatt IN (VELG fornavn, etternavn
FRA ansatte) LOOP
DBMS_OUTPUT.PUT_LINE(ansatt.fornavn || ' ' || ansatt.etternavn);
END LOOP;
SLUTT;
Eksempelutgang:
Konklusjon
I dette innlegget møtte du tre hovedtyper av løkker i Oracle PL/SQL-språket. Du kan sjekke dokumentasjonen for å utforske videre.