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.

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.

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.
