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ů.

  • 🔢 Nejlepší pro: Smyčka FOR se hodí spíše pro známý počet iterací než pro podmínku s otevřeným koncem.
  • 📏 Rozsah: Dolní a horní limit definují, kolikrát se smyčka spustí.
  • ⚙️ Implicitní čítač: Proměnná cyklu je deklarována automaticky a sama se inkrementuje.
  • 🎯 Rozsah: Proměnná smyčky existuje pouze uvnitř smyčky.
  • 🔄 ZVRÁTIT: Přidáním REVERSE před dolní limit se smyčka odpočítává zpět.
  • 🪜 Vnořené: Smyčky lze vnořovat a vnitřní smyčka se plně spustí pro každou vnější iteraci.
  • 🚪 Automatický výstup: Smyčka se automaticky ukončí, když proměnná opustí rozsah.

Oracle PL/SQL smyčka For

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.

Smyčka FOR tiskne čísla 1 až 5

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.

Struktura vnořené smyčky

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.

Příklad vnořené smyčky FOR, část 1

Příklad vnořené smyčky FOR, část 2

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.

Nejčastější dotazy

Ne. Smyčka FOR deklaruje svou proměnnou implicitně a ta existuje pouze uvnitř smyčky. Deklarace proměnné se stejným názvem vně smyčky neovlivní tu, kterou smyčka používá.

REVERSE způsobí, že smyčka bude iterovat od horní meze dolů k dolní mezi. Limity jsou stále zapisovány od nízké po vysokou; pouze pořadí, ve kterém jsou hodnoty navštěvovány, je obráceno.

Smyčku FOR použijte, pokud je počet iterací předem znám, například v pevném rozsahu. Smyčku WHILE použijte, pokud má smyčka pokračovat, dokud je splněna podmínka, a počet iterací není pevný.

Ano, když základní smyčka jednoduše počítá mezi dvěma pevnými hodnotami. AI může nahradit ruční čítač a příkaz EXIT rozsahem FOR, čímž se kód zkrátí. Ověřte, zda hranice odpovídají originálu.

Ne. Proměnná smyčky je uvnitř smyčky pouze pro čtení, takže její přiřazení vyvolá chybu kompilace. Chcete-li změnit tok smyčky, použijte samostatnou proměnnou nebo smyčku ukončete příkazem EXIT.

Shrňte tento příspěvek takto: