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.

  • 🔁 Účel: Smyčka spouští blok kódu mnohokrát, čímž se snižuje jeho velikost a složitost.
  • 🧭 Čítač smyček: Proměnná čítače určuje podmínku smyčky a musí se změnit, aby se smyčka mohla ukončit.
  • ⏭️ POKRAČOVAT: Přeskočí zbytek aktuální iterace a spustí další.
  • 🚪 VÝCHOD / VÝCHOD KDYŽ: Okamžitě opouští smyčku, volitelně i když je splněna booleovská podmínka.
  • ???? ️ Štítky: Popisek smyčky mezi dvojitými lomenými závorkami umožňuje příkazu EXIT zaměřit se na vnější smyčku.
  • ♾️ Základní smyčka: Běží, dokud není dosaženo explicitního EXITu; bez něj se smyčka opakuje donekonečna.
  • 🧩 Tři typy: Základní smyčka, smyčka FOR a smyčka WHILE pokrývají běžné vzory.

Oracle PL/SQL smyčka

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.

Toaletaping Tok konceptů v PL/SQL

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:

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

Základní struktura smyčky v PL/SQL

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.

Základní čísla pro tisk smyček 1 až 5

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.

Struktura vnořené smyčky s popisky

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

Příklad označené smyčky, část 1Příklad označené smyčky, část 2

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

Nejčastější dotazy

Funkce EXIT bezpodmínečně opouští smyčku. Funkce EXIT WHEN ji opouští pouze tehdy, když je pravdivý následující booleovský výraz, což eliminuje potřebu samostatného IF kolem prostého příkazu EXIT.

Návěští umožňuje příkazu EXIT ve vnitřní smyčce opustit pojmenovanou vnější smyčku v jednom kroku. Vnořený kód je díky němu také mnohem čitelnější než tracpříkazy END LOOP od Kinga.

Pokud blok nemá podmínku EXIT nebo čítač nikdy nedosáhne výstupní podmínky, smyčka se nikdy nezastaví. Vždy se ujistěte, že se čítač změní směrem k podmínce EXIT WHEN.

Často ano. Umělá inteligence to dokáže trace zda se čítač pohybuje směrem k podmínce EXIT a varuje, když smyčka nemá dosažitelný výstup, ačkoli výstup závislý na datech stále vyžaduje testovací běh pro potvrzení.

CONTINUE přeskočí zbytek aktuální iterace a skočí na další. Je užitečný, když je třeba ignorovat určité hodnoty, aniž by se smyčka úplně opustila.

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