Podczas pętli Oracle PL/SQL z przykładem

⚡ Inteligentne podsumowanie

Oracle Pętla WHILE w PL/SQL powtarza blok kodu, dopóki warunek pozostaje spełniony. Jest to pętla sprawdzająca wejście, testująca warunek wyjścia przed każdą iteracją, więc blok może zostać wykonany zero razy i nie wymaga jawnego słowa kluczowego EXIT.

  • 🔁 Cel: Pętla WHILE działa tak długo, jak długo warunek jest prawdziwy, i zatrzymuje się, gdy warunek staje się fałszywy.
  • 🚦 Kontrola wjazdu: Warunek jest sprawdzany przed blokiem, więc pętla może wykonać się zero razy.
  • 🧮 Wyjście nie jest potrzebne: Warunek jest weryfikowany niejawnie w każdej iteracji, więc nie jest wymagane jawne EXIT.
  • 🔢 Licznik: Zmienna wewnątrz bloku musi ulec zmianie, aby warunek ostatecznie stał się fałszywy.
  • ♾️. Nieskończone ryzyko: Jeżeli licznik nigdy nie spełnia warunku, pętla będzie wykonywana w nieskończoność.
  • ⚖️. vs DLA: Użyj WHILE, gdy liczba iteracji jest nieznana, lub FOR, gdy jest ustalona.
  • 🚪 Wczesne wyjście: EXIT WHEN nadal może opuścić pętlę WHILE zanim warunek zmieni się na fałszywy.

Oracle Pętla while PL/SQL

Czym jest pętla While w języku PL/SQL?

Podczas pętli W PL/SQL działa podobnie do podstawowej instrukcji pętli, z tą różnicą, że warunek wyjścia znajduje się na samym początku pętli. Działa to jak pętla z kontrolą wejścia, gdzie blok wykonania uruchamia się tylko wtedy, gdy warunek jest spełniony, ponieważ warunek wyjścia jest sprawdzany przed wykonaniem.

Nie wymaga ona jawnego użycia słowa kluczowego „EXIT” w celu wyjścia z pętli, ponieważ za każdym razem niejawnie weryfikuje warunek.

PL/SQL Składnia pętli while

WHILE <EXIT condition>
LOOP
<execution block starts>
.
.
.
<execution_block_ends>
END LOOP;
  • Słowo kluczowe „WHILE” oznacza początek pętli, a „END LOOP” oznacza jej koniec.
  • Warunek wyjścia jest oceniany za każdym razem przed rozpoczęciem wykonywania części wykonawczej.
  • Blok wykonawczy zawiera cały kod, który musi zostać uruchomiony.
  • Część wykonawcza może zawierać dowolne polecenie wykonywalne.

Przykład Oracle Pętla while PL/SQL

W tym przykładzie drukujemy liczby od 1 do 5, używając instrukcji pętli WHILE.

Przykład pętli while PL/SQL
Przykład pętli while 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 Wyjaśnienie:

  • Code linia 2: Deklarowanie zmiennej „a” jako „NUMBER” i inicjowanie jej wartością „1”.
  • Code linia 4: Wydruk komunikatu „Program uruchomiony”.
  • Code linia 5: Słowo kluczowe „WHILE” oznacza początek pętli i sprawdza, czy wartość „a” jest mniejsza lub równa 5.
  • Code linia 7: Drukuje wartość „a”.
  • Code linia 8: Zwiększa wartość 'a' o 1.
  • Code linia 9: Słowo kluczowe „END LOOP” oznacza koniec bloku wykonawczego.
  • Linie 7 i 8 są wykonywane do momentu, aż „a” osiągnie wartość 6, w którym to momencie warunek zwróci FAŁSZ, a sterowanie opuści pętla.
  • Code linia 10: Wydruk komunikatu „Program zakończony”.

Pętla WHILE vs. pętla FOR vs. pętla podstawowa

PL/SQL oferuje trzy typy pętli, a wybór odpowiedniego zapewnia przejrzystość kodu. Pętla WHILE nadaje się do powtórzeń sterowanych warunkami, podczas gdy pozostałe dwie do stałej liczby powtórzeń lub jawnie kontrolowanego wyjścia.

Pętla Kryteria wyjścia Najlepiej stosować, gdy
Pętla WHILE Warunek na górze staje się fałszywy Liczba iteracji jest nieznana
Dla pętli Licznik osiąga koniec zakresu Liczba iteracji jest znana
Podstawowa pętla Jawne WYJŚCIE w bloku Wyjście jest sterowane ręcznie

Ponieważ pętla WHILE sprawdza swój warunek na początku, treść pętli może wykonać się zero razy, jeśli warunek od początku jest fałszywy. To kluczowa różnica w porównaniu z pętlą podstawową, której treść pętli zawsze wykonuje się co najmniej raz.

Unikanie nieskończonej pętli while

Pętla WHILE jest całkowicie zależna od zmiennej sterującej, która zmierza w kierunku warunku wyjścia. Jeśli nigdy tego nie zrobi, pętla będzie działać w nieskończoność, a sesja się zawiesi. Zapobiegają temu trzy nawyki:

  • Zmień licznik przy każdej iteracji. W przykładzie 'a' jest zwiększane wewnątrz pętli; usunięcie tego wiersza spowodowałoby nieskończone działanie pętli.
  • Przetestuj granicę. Potwierdź, że warunek może faktycznie stać się fałszywy dla wartości początkowej, a nie tylko dla idealnego przypadku.
  • Dodaj wyjście bezpieczeństwa GDY. W przypadku pętli opartej na danych instrukcja EXIT WHEN przy maksymalnej liczbie iteracji pełni funkcję zabezpieczenia przed nieoczekiwaną wartością.

Gdy liczba powtórzeń jest rzeczywiście stała, pętla FOR całkowicie eliminuje ryzyko, ponieważ jej licznik jest zarządzany automatycznie.

FAQ

Tak. Ponieważ warunek jest sprawdzany przed blokiem, jeśli na początku jest fałszywy, treść bloku nigdy się nie uruchamia. To sprawdzenie wejścia to główna różnica w porównaniu z pętlą podstawową, która zawsze uruchamia się raz.

Upewnij się, że zmienna w pętli zmienia się w kierunku warunku wyjścia w każdej iteracji. Dodanie EXIT WHEN przy maksymalnej liczbie jest użytecznym zabezpieczeniem dla pętli sterowanych danymi.

Użyj WHILE, gdy liczba iteracji nie jest znana i zależy od warunku. Użyj FOR, gdy pętla jest wykonywana w ustalonym zakresie, ponieważ jego licznik jest zarządzany automatycznie.

Często. Sztuczna inteligencja może sprawdzić, czy zmienna kontrolna zbliża się do warunku wyjścia i ostrzec, gdy tak się nie dzieje. Pętla, której wyjście zależy od danych na żywo, nadal wymaga testu, aby mieć pewność.

Tak. Chociaż pętla WHILE kończy działanie, gdy jej główny warunek staje się fałszywy, pętla EXIT lub EXIT WHEN wewnątrz ciała pętli może zakończyć działanie wcześniej, co jest przydatne w przypadku przerwania pętli w szczególnym przypadku.

Podsumuj ten post następująco: