Zatímco Loop in Oracle PL/SQL s příkladem

⚡ Chytré shrnutí

Oracle Cyklus PL/SQL WHILE opakuje blok kódu, dokud je podmínka splněna. Jedná se o cyklus kontroly vstupů, který před každou iterací testuje výstupní podmínku, takže blok se může spustit nulakrát a nepotřebuje žádné explicitní klíčové slovo EXIT.

  • 🔁 Účel: Smyčka WHILE běží, dokud je podmínka pravdivá, a zastaví se, jakmile je nepravdivá.
  • 🚦 Vstupní kontrola: Podmínka je testována před blokem, takže smyčka může běžet nulakrát.
  • 🧮 Není potřeba VÝCHOD: Podmínka je implicitně ověřována v každé iteraci, takže není vyžadován žádný explicitní EXIT.
  • 🔢 Počítadlo: Proměnná uvnitř bloku se musí změnit, aby se podmínka nakonec stala nepravdivou.
  • ♾️ Nekonečné riziko: Pokud čítač nikdy nesplní podmínku, smyčka běží donekonečna.
  • 🇧🇷 vs. PRO: Použijte WHILE, pokud počet iterací není znám, a FOR, pokud je pevný.
  • 🚪 Předčasný odchod: Příkaz EXIT WHEN může stále opustit smyčku WHILE, než se podmínka stane nepravdivou.

Oracle PL/SQL While Loop

Co je to smyčka While v PL/SQL?

Jedno Zatímco Loop V PL/SQL funguje podobně jako základní příkaz smyčky, až na to, že podmínka ukončení je na samém začátku smyčky. Funguje to jako smyčka s kontrolou vstupů, kde se prováděcí blok spustí pouze tehdy, je-li splněna podmínka, protože podmínka ukončení je kontrolována před provedením.

Nevyžaduje explicitně klíčové slovo 'EXIT' pro ukončení smyčky, protože podmínku pokaždé implicitně ověří.

Syntaxe smyčky PL/SQL

WHILE <EXIT condition>
LOOP
<execution block starts>
.
.
.
<execution_block_ends>
END LOOP;
  • Klíčové slovo „WHILE“ označuje začátek smyčky a „END LOOP“ označuje její konec.
  • Ukončovací podmínka se vyhodnocuje pokaždé před zahájením provádění prováděcí části.
  • Blok prováděných operací obsahuje veškerý kód, který je potřeba spustit.
  • Část pro spuštění může obsahovat libovolný spustitelný příkaz.

Příklad Oracle PL/SQL While Loop

V tomto příkladu vypíšeme čísla od 1 do 5 pomocí příkazu cyklu WHILE.

Příklad smyčky PL/SQL
Příklad smyčky PL/SQL
DECLARE
a NUMBER := 1;
BEGIN
dbms_output.put_line('Program started');
WHILE (a <= 5)
LOOP
dbms_output.put_line(a);
a:= a+1;
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 'WHILE' označuje začátek smyčky a kontroluje, zda je hodnota 'a' menší nebo rovna 5.
  • Code řádek 7: Vytiskne hodnotu 'a'.
  • Code řádek 8: Zvýší hodnotu proměnné 'a' o 1.
  • Code řádek 9: Klíčové slovo 'END LOOP' označuje konec prováděcího bloku.
  • Řádky 7 a 8 se pokračují v provádění, dokud 'a' nedosáhne hodnoty 6, načež se podmínka vrátí na hodnotu FALSE a řízení ukončí operaci. smyčka.
  • Code řádek 10: Vytiskne se výpis „Program dokončen“.

Smyčka WHILE vs. smyčka FOR vs. základní smyčka

PL/SQL nabízí tři typy cyklů a výběr toho správného udrží kód přehledný. Cyklus WHILE je vhodný pro opakování řízené podmínkou, zatímco další dva jsou vhodné pro pevný počet nebo explicitně řízený návrat.

Smyčka Výstupní kritéria Nejlépe se používá, když
Smyčka WHILE Podmínka nahoře se stává falešnou Počet iterací není znám
smyčka FOR Počítadlo dosáhne konce rozsahu Počet iterací je známý
Základní smyčka Explicitní EXIT v bloku Východ je ovládán ručně

Protože smyčka WHILE testuje svou podmínku na začátku, tělo smyčky se může spustit nulakrát, pokud je podmínka od začátku nepravdivá. To je klíčový rozdíl oproti základní smyčce, jejíž tělo se vždy spustí alespoň jednou.

Vyhnutí se nekonečné smyčce While

Smyčka WHILE zcela závisí na pohybu řídicí proměnné směrem k výstupní podmínce. Pokud se tak nikdy nestane, smyčka běží donekonečna a relace se zasekne. Tomu brání tři návyky:

  • Změňte čítač v každé iteraci. Příklad uvnitř smyčky zvyšuje hodnotu 'a'; odstranění tohoto řádku by způsobilo nekonečnou smyčku.
  • Otestujte hranici. Potvrďte, že podmínka se může stát nepravdivou pro počáteční hodnotu, nejen pro ideální případ.
  • Přidejte bezpečnostní VÝCHOD KDYŽ. U smyčky řízené daty funguje příkaz EXIT WHEN při maximálním počtu iterací jako ochrana před neočekávanou hodnotou.

Pokud je počet opakování skutečně fixní, smyčka FOR toto riziko zcela eliminuje, protože její čítač je spravován automaticky.

Nejčastější dotazy

Ano. Protože je podmínka kontrolována před blokem, pokud je na začátku nepravdivá, tělo smyčky se nikdy nespustí. Tato kontrola vstupů je hlavním rozdílem od základní smyčky, která se vždy spustí jednou.

Ujistěte se, že se proměnná uvnitř smyčky mění směrem k výstupní podmínce v každé iteraci. Přidání podmínky EXIT WHEN při maximálním počtu je užitečnou záchrannou sítí pro smyčky řízené daty.

Použijte WHILE, pokud počet iterací není znám a závisí na podmínce. Použijte FOR, když procházíte smyčkou pevný rozsah, protože jeho čítač je spravován automaticky.

Často. Umělá inteligence dokáže zkontrolovat, zda se řídicí proměnná pohybuje směrem k výstupní podmínce, a varovat, pokud se tak nestane. Smyčka, jejíž ukončení závisí na živých datech, stále potřebuje test, aby si byla jistá.

Ano. Ačkoliv se smyčka WHILE ukončí, když se její nejvyšší podmínka změní na nepravdivou, příkaz EXIT nebo EXIT WHEN uvnitř těla smyčky ji může opustit dříve, což je praktické pro speciální případy.

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