Oracle PL/SQL FOR LOOP s příkladem
Co je For Loop?
Příkaz „FOR LOOP“ je nejvhodnější, když chcete provést kód pro známý počet opakování, spíše než na základě nějakých jiných podmínek.
V této smyčce bude zadán dolní a horní limit a dokud bude proměnná smyčky mezi tímto rozsahem, bude se smyčka provádět.
Proměnná smyčky je samopřírůstková, takže v této smyčce není potřeba žádná explicitní operace přírůstku. Proměnná smyčky nemusí být deklarována, 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:
- Ve výše uvedené syntaxi klíčové slovo „FOR“ označuje začátek smyčky a „END LOOP“ označuje konec smyčky.
- Proměnná smyčky je vyhodnocena pokaždé před provedením prováděcí části.
- Prováděcí blok obsahuje veškerý kód, který je třeba provést. Prováděcí část může obsahovat libovolný příkaz provedení.
- Proměnná loop_variable je deklarována implicitně během provádění celé smyčky a rozsah této proměnné loop_variable bude pouze uvnitř této smyčky.
- Pokud se proměnná smyčky dostala mimo rozsah, řízení opustí smyčku.
- Smyčku lze nastavit tak, aby fungovala v opačném pořadí přidáním klíčového slova 'REVERSE' před dolní_limit.
Příklad 1: V tomto příkladu vytiskneme číslo od 1 do 5 pomocí příkazu FOR cyklu. Za tímto účelem spustíme následující kód.
BEGIN dbms Qutput.put linef.Prp.gram started.' ); FOR a IN 1 .. 5 LOOP dbms_output.put_line(a); END LOOP: dbms_output.put_iine('Program completed.'); END; /
Vysvětlení kódu:
- Řádek kódu 2: Tisk prohlášení „Program spuštěn“.
- Řádek kódu 3: Klíčové slovo 'FOR' označuje začátek cyklu a je deklarována proměnná loop_variable 'a'. Nyní bude mít hodnotu od 1 do 5
- Řádek kódu 5: Vytiskne hodnotu 'a'.
- Řádek kódu 6: Klíčové slovo 'END LOOP' označuje konec bloku provádění.
- Kód z řádku 5 bude pokračovat v provádění, dokud 'a' nedosáhne hodnoty 6, protože podmínka selže a ovládací prvek opustí smyčku.
- Řádek kódu 7: Tisk prohlášení „Program dokončen“
Vnořené smyčky
Příkazy smyčky lze také vnořit. Vnější a vnitřní smyčka může být různých typů. Ve vnořené smyčce se pro každou jednu iterační hodnotu vnější smyčky plně provede vnitřní smyčka.
LOOP -outer <execution block starts> LOOP — inner <execution_part> END LOOP; <execution_block_ends> END LOOP;
Vysvětlení syntaxe:
- Ve výše uvedené syntaxi má vnější smyčka uvnitř ještě jednu smyčku.
- Smyčky mohou být libovolného typu a funkční část provedení je stejná.
Příklad 1: V tomto příkladu vytiskneme číslo od 1 do 3 pomocí příkazu FOR cyklu. Každé číslo bude vytištěno tolikrát, kolikrát je jeho hodnota. Za tímto účelem spustíme následující kód.
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; /
Vysvětlení kódu:
- Řádek kódu 2: Deklarování proměnné 'b' jako datového typu 'NUMBER'.
- Řádek kódu 4: Tisk prohlášení „Program spuštěn“.
- Řádek kódu 5: Klíčové slovo 'FOR' označuje začátek cyklu a je deklarována proměnná loop_variable 'a'. Nyní bude mít hodnotu od 1 do 3
- Řádek kódu 7: Pokaždé resetování hodnoty 'b' na '1'.
- Řádek kódu 8: Vnitřní zatímco smyčka kontroluje podmínku a>=b.
- Řádek kódu 10: Vytiskne hodnotu 'a', pokud je splněna výše uvedená podmínka.
- Řádek kódu 14: Tisk prohlášení „Program dokončen“
Shrnutí
Smyčka | PRO Smyčka |
---|---|
EXIT Kritéria | Ukončete, když počítadlo dosáhne limitu |
Používání | Vhodné použít, když je znám počet smyček, které se mají provést. |