Stejně jako všechny hlavní programovací jazyky podporuje PL/SQL smyčky, které umožňují opakování sady instrukcí, dokud není splněna určitá podmínka.
V tomto tutoriálu prozkoumáme použití příkazu LOOP v PL/SQL k opakovanému provádění bloku kódu.
Oracle Loops
Jazyk PL/SQL podporuje různé konstrukce smyček, jako jsou smyčky „for“ a „while“. Můžeme vyjádřit syntaxi generické smyčky v Oracle, jak je ukázáno v následujícím:
<< označení >> SMYČKA
loop_statement;
END LOOP loop_label;
Obsahuje klíčové slovo LOOP a tělo cyklu, který se má provést, a je uzavřeno s klíčovým slovem END LOOP.
Blok LOOP spustí definované akce a po dokončení vrátí řízení do klauzule horní smyčky. To je obvykle uzavřeno v klauzuli EXIT nebo EXIT WHEN pro ukončení smyčky po splnění určité podmínky. To pomáhá předcházet nekonečným smyčkám.
Syntaxe Oracle For Loop:
Následující text ukazuje syntaxi smyčky „for“ v PL/SQL:
ZAČÍTFOR loop_variable IN [lower_bound..upper_bound] LOOP
-- kód, který se má provést ve smyčce
KONEC SMYČKY;
KONEC;
Proměnná loop_variable vám umožňuje definovat smyčku, která se používá k řízení smyčky a dolní a horní hranice. Horní a dolní hranice určují hodnoty rozsahu, ve kterém dochází k vyhodnocení smyčky.
Oracle While Loops
Můžeme také definovat smyčky „while“ v PL/SQL, jak ukazuje následující syntaxe:
ZAČÍTWHILE stav LOOP
-- akce smyčky
KONEC SMYČKY;
KONEC;
Ve smyčce „while“ se akce smyčky provádí opakovaně, dokud je podmínka pravdivá.
Oracle Cursor pro smyčky
Oracle také podporuje smyčky „cursor for“, které nám umožňují provádět sadu instrukcí pro každý řádek v dané sadě výsledků. Syntaxi lze vyjádřit následovně:
ZAČÍTFOR loop_variable IN (SELECT sloupec1, sloupec2, ...
Z tabulky 1, tabulky 2, ...
WHERE podmínka) LOOP
-- akce smyčky
KONEC SMYČKY;
KONEC;
Příklad smyček v Oracle
Následující příklady pokrývají základy práce s kurzorovými smyčkami for, while a for v Oracle.
Příklad Oracle For Loop:
Tento příklad ukazuje, jak použít smyčku „for“ k tisku čísel od 1 do 10.
ZAČÍTPRO i V 1..10 SMYČCE
DBMS_OUTPUT.PUT_LINE(i);
KONEC SMYČKY;
KONEC;
Příklad while Loop:
Můžeme provést podobnou akci pomocí smyčky while, jak je znázorněno v následujícím:
ZAČÍTPROHLÁSIT
i ČÍSLO := 1;
ZAČÍT
KDYŽ i <= 10 LOOP
DBMS_OUTPUT.PUT_LINE(i);
i:= i + 1;
KONEC SMYČKY;
KONEC;
KONEC;
To by mělo provést podobnou akci jako smyčka „for“.
Příklad kurzoru pro smyčku:
Následující text ukazuje, jak pomocí smyčky „kurzor pro“ získat celé jméno zákazníka:
ZAČÍTPRO zaměstnance IN (SELECT jméno, příjmení
OD zaměstnanců) LOOP
DBMS_OUTPUT.PUT_LINE(zaměstnanec.křestní_jméno || ' ' || zaměstnanec.příjmení);
KONEC SMYČKY;
KONEC;
Příklad výstupu:
Závěr
V tomto příspěvku jste se setkali se třemi hlavními typy smyček v jazyce Oracle PL/SQL. Pro další prozkoumání si můžete prohlédnout dokumentaci.