Oracle PL/SQL LOOP s příkladem
⚡ Chytré shrnutí
Smyčky v PL/SQL opakovaně provádějí část kódu po požadovaný počet opakování. PL/SQL nabízí základní smyčky FOR a WHILE, řízené příkazy CONTINUE, EXIT, EXIT WHEN a GOTO, a smyčky lze pojmenovat pro přehlednou správu vnořených struktur.

Co jsou smyčky?
Smyčky umožňují, aby určitá část kódu v programu byla spuštěna požadovaný početkrát. V tomto tutoriálu se podíváme na koncept smyček v PL/SQL a tok řízení v těchto smyčkách.
Úvod do konceptu smyček
Koncept smyček poskytuje v kódování následující výhody:
- Znovupoužitelnost kódu.
- Zmenšená velikost kódu.
- Snadný tok ovládání.
- Snížená složitost.
Níže uvedený diagram znázorňuje toaletuping pojem.
Na výše uvedeném diagramu je kontrolována podmínka smyčky a pokud je splněna, prováděcí blok se spustí.
V každé iteraci se proměnná čítače smyčky, která určuje, zda se má změnit podmínka smyčky, aby ovládací prvek smyčku opustil. V některých případech je tento čítač přírůstkem nebo úbytkem pro předem definovaný počet a v jiných je to vyhledávací podmínka, která blok provádí, dokud není splněna.
Prohlášení o smyčce
Než se naučíme koncept cyklů, je důležité se seznámit s příkazy pro řízení cyklů. Tyto příkazy řídí tok provádění uvnitř cyklů.
POKRAČOVAT
Toto klíčové slovo instruuje PL/SQL engine, že kdykoli narazí na CONTINUE uvnitř smyčky, přeskočí zbývající kód v prováděcím bloku a okamžitě spustí další iteraci. Toto se používá hlavně tehdy, když má být kód uvnitř smyčky přeskočen pro určité hodnoty iterací.
EXIT / EXIT WHEN
Toto klíčové slovo instruuje PL/SQL engine k okamžitému ukončení aktuální smyčky. Ve vnořené smyčce ukončí příkaz EXIT ve vnitřní smyčce pouze vnitřní smyčku, nikoli vnější smyčku. Za výrazem 'EXIT WHEN' následuje výraz, který vrací booleovský výsledek; pokud je výsledek TRUE, řízení se ukončí.
GOTO
Tento příkaz předává řízení na příkaz s označením („GOTO ;“). Má následující omezení:
- Přenos řízení lze provést pouze v rámci podprogramů.
- Předání řízení nelze provést z části pro zpracování výjimek do části pro provádění.
Použití tohoto příkazu se nedoporučuje, pokud neexistuje žádná alternativa, protože kódová kontrola tracSchopnost se stává velmi obtížnou, když se kontrola přenáší z jedné části na druhou.
Typy smyček v PL/SQL
PL / SQL nabízí následující tři typy smyček:
- Základní příkaz smyčky
- Příkaz pro smyčku
- Příkaz while loop
Níže uvedená tabulka porovnává tyto tři, než bude podrobně popsána základní smyčka.
| Smyčka | Výstupní kritéria | Nejlépe se používá, když |
|---|---|---|
| Základní smyčka | Explicitní EXIT v bloku | Východ není založen na pevném počtu nebo podmínce |
| smyčka FOR | Počítadlo dosáhne konce svého rozsahu | Počet iterací je předem znám |
| Smyčka WHILE | Podmínka se stává falešnou | Smyčka by měla běžet, dokud je splněna podmínka |
Základní příkaz smyčky
Toto je nejjednodušší struktura smyčky v PL/SQL. Prováděcí blok začíná klíčovým slovem 'LOOP' a končí 'END LOOP'. Podmínka ukončení by měla být zadána uvnitř prováděcího bloku, aby řízení ukončilo smyčku, a klíčové slovo EXIT musí být zadáno explicitně.
LOOP <execution block starts> <EXIT condition based on developer criteria> <execution_block_ends> END LOOP;
Vysvětlení syntaxe:
- Klíčové slovo „LOOP“ označuje začátek smyčky a „END LOOP“ označuje její konec.
- Blok pro spuštění obsahuje veškerý kód, který je potřeba spustit, včetně podmínky EXIT.
- Část pro spuštění může obsahovat libovolný spustitelný příkaz.
Poznámka: Základní příkaz smyčky bez klíčového slova EXIT je nekonečná smyčka, která se nikdy nekončí.
Příklad 1: V tomto příkladu vypíšeme čísla od 1 do 5 pomocí základního příkazu cyklu.
DECLARE a NUMBER:= 1; BEGIN dbms_output.put_line('Program started.'); LOOP dbms_output.put_line(a); a:= a+1; EXIT WHEN a>5; END LOOP; dbms_output.put_line('Program completed'); END; /
Code Vysvětlení:
- Code řádek 2: Deklarace proměnné 'a' jako 'NUMBER' a její inicializace hodnotou '1'.
- Code řádek 4: Vypsání výpisu „Program spuštěn“.
- Code řádek 5: Klíčové slovo „LOOP“ označuje začátek smyčky.
- Code řádek 6: Vytiskne hodnotu 'a'.
- Code řádek 7: Zvýší hodnotu proměnné 'a' o 1.
- Code řádek 8: Zkontroluje, zda je hodnota 'a' větší než 5.
- Code řádek 9: Klíčové slovo 'END LOOP' označuje konec prováděcího bloku.
- Řádky 6 až 8 se pokračují v provádění, dokud 'a' nedosáhne hodnoty 6, načež se podmínka vrátí na hodnotu TRUE a řízení ukončí smyčku.
- Code řádek 10: Vytiskne se výpis „Program dokončen“.
Označování smyček
V PL/SQL lze smyčky označovat. Označení by mělo být uzavřeno mezi „<<“ a „>>“. Označování smyček, zejména ve vnořených smyčkách, zajišťuje lepší čitelnost. Označení lze zadat v příkazu EXIT pro ukončení dané smyčky, takže řízení může přímo opustit vnější smyčku vnořené struktury zadáním příkazu EXIT následovaného označením vnější smyčky.
<<OUTER_LOOP>> LOOP <execution_block_starts> . <<INNER_LOOP>> LOOP --inner <execution_part> END LOOP; . <execution_block_ends> END LOOP;
Vysvětlení syntaxe:
- Vnější smyčka má uvnitř ještě jednu smyčku.
- '< >' a '<' >' jsou označení těchto smyček.
Příklad 1: V tomto příkladu vypíšeme čísla počínaje 1 pomocí základního příkazu cyklu. Každé číslo se vypíše tolikrát, kolikrát má hodnotu. Horní hranice řady je pevně stanovena v deklarační části. K dosažení tohoto cíle používáme koncept návěští.
DECLARE a NUMBER:= 0; b NUMBER; upper_limit NUMBER := 4; BEGIN dbms_output.put_line('Program started.'); <<outer_loop>> LOOP a:= a+1; b:= 1; <<inner_loop>> LOOP EXIT outer_loop WHEN a > upper_limit; dbms_output.put_line(a); b:= b+1; EXIT inner_loop WHEN b>a; END LOOP; END LOOP; dbms_output.put_line('Program completed.'); END; /
Code Vysvětlení:
- Code řádek 2–3: Deklarace proměnných 'a' a 'b' jako datového typu 'NUMBER'.
- Code řádek 4: Deklarace proměnné 'upper_limit' jako 'NUMBER' s hodnotou '4'.
- Code řádek 6: Vypsání výpisu „Program spuštěn“.
- Code řádek 7: Vnější smyčka je označena jako „outer_loop“.
- Code řádek 9: Hodnota 'a' se zvýší o 1.
- Code řádek 11: Vnitřní smyčka je označena jako „inner_loop“.
- Code řádek 13: Podmínka EXIT, která kontroluje, zda je 'a' vyšší než hodnota 'upper_limit'. Pokud ne, pokračuje se dále; jinak se přímo opustí vnější smyčka.
- Code řádek 14: Tisk hodnoty 'b'.
- Code řádek 15: Zvýší hodnotu proměnné 'b' o 1.
- Code řádek 16: Podmínka EXIT, která kontroluje, zda je 'b' vyšší než 'a'. Pokud ano, ukončí vnitřní smyčku.
- Code řádek 19: Vytiskne se výpis „Program dokončen“.






