Oracle PL/SQL FOR LOOP s příkladem
⚡ Chytré shrnutí
Oracle Smyčka FOR v PL/SQL spouští blok kódu známý počet opakování mezi dolní a horní mezí. Proměnná smyčky je deklarována implicitně a sama se inkrementuje, takže není potřeba ruční čítač, a klíčové slovo REVERSE umožňuje smyčce odpočítávat směrem dolů.

Co je to smyčka FOR?
Příkaz „FOR LOOP“ je nejvhodnější, když chcete spustit kód známý početkrát, spíše než na základě nějaké jiné podmínky.
V této smyčce je zadána dolní a horní mez a pokud se proměnná smyčky nachází v tomto rozsahu, smyčka se provede.
Proměnná cyklu je samoinkrementální, takže není nutná žádná explicitní operace inkrementace. Proměnnou cyklu není nutné deklarovat, protože je deklarována implicitně.
FOR <loop_variable> in <lower_limit> .. <higher_limit> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
Vysvětlení syntaxe:
- Klíčové slovo „FOR“ označuje začátek smyčky a „END LOOP“ označuje konec.
- Proměnná smyčky se vyhodnocuje pokaždé před provedením prováděcí části.
- Blok pro spuštění obsahuje veškerý kód, který je potřeba spustit, a může obsahovat libovolný spustitelný příkaz.
- Proměnná loop_variable je deklarována implicitně během provádění smyčky a její rozsah platnosti je pouze uvnitř smyčky.
- Když se proměnná smyčky dostane mimo rozsah, řízení smyčku ukončí.
- Smyčku lze nastavit v opačném pořadí přidáním klíčového slova 'REVERSE' před lower_limit.
Příklad 1: V tomto příkladu vypíšeme čísla od 1 do 5 pomocí příkazu FOR.
BEGIN dbms_output.put_line('Program started.'); FOR a IN 1 .. 5 LOOP dbms_output.put_line(a); END LOOP; dbms_output.put_line('Program completed.'); END; /
Code Vysvětlení:
- Code řádek 2: Vypsání výpisu „Program spuštěn“.
- Code řádek 3: Klíčové slovo 'FOR' označuje začátek smyčky a je deklarována proměnná smyčky 'a'. Nyní nabývá hodnot od 1 do 5.
- Code řádek 5: Vytiskne hodnotu 'a'.
- Code řádek 6: Klíčové slovo 'END LOOP' označuje konec prováděcího bloku.
- Řádek 5 se pokračuje v provádění, dokud 'a' nedosáhne hodnoty 6, v tomto okamžiku podmínka selže a řízení ukončí smyčku.
- Code řádek 7: Vytiskne se výpis „Program dokončen“.
Vnořené smyčky
Příkazy smyčky mohou být také vnořené. Vnější a vnitřní smyčka mohou být různých typů. Ve vnořené smyčce se pro každou iteraci vnější smyčky provede plně vnitřní smyčka.
LOOP --outer <execution block starts> 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.
- Smyčky mohou být libovolného typu a funkcionalita provádění je stejná.
Příklad 1: V tomto příkladu vypíšeme čísla od 1 do 3 pomocí příkazu cyklu FOR. Každé číslo se vypíše tolikrát, kolikrát je jeho hodnota.
DECLARE b NUMBER; BEGIN dbms_output.put_line('Program started'); FOR a IN 1..3 LOOP b:= 1; WHILE (a>=b) LOOP dbms_output.put_line(a); b:= b+1; END LOOP; END LOOP; dbms_output.put_line('Program completed'); END; /
Code Vysvětlení:
- Code řádek 2: Deklarace proměnné 'b' jako datového typu 'NUMBER'.
- Code řádek 4: Vypsání výpisu „Program spuštěn“.
- Code řádek 5: Klíčové slovo 'FOR' označuje začátek smyčky a je deklarována proměnná smyčky 'a'. Nyní nabývá hodnot od 1 do 3.
- Code řádek 7: Pokaždé resetování hodnoty 'b' na '1'.
- Code řádek 8: Vnitřní zatímco smyčka kontroluje podmínku a>=b.
- Code řádek 10: Vytiskne hodnotu 'a', pokud je splněna výše uvedená podmínka.
- Code řádek 14: Vytiskne se výpis „Program dokončen“.
Smyčka FOR a zpětná smyčka FOR
Ve výchozím nastavení smyčka FOR počítá vzestupně od dolní meze k horní mezi. Přidání klíčového slova REVERSE způsobí, že se smyčka počítá směrem dolů, zatímcoping limity ve stejném pořadí. Oba tvary jsou níže zobrazeny společně, aby byl rozdíl jasný.
| Formulář | Hlavička | Pořadí hodnot |
|---|---|---|
| Vzestupně | PRO VSTUP 1 .. 5 | 1, 2, 3, 4, 5 |
| Klesající | PRO ZPĚTNÝ CHOD 1 .. 5 | 5, 4, 3, 2, 1 |
Všimněte si, že i při použití REVERSE se dolní limit stále zapisuje před horní limit; mění se pouze směr iterace. Pro smyčky, jejichž počet není předem znám, základní smyčka je lepší volba.




