Oracle PL/SQL FOR LOOP z przykładem
Co to jest pętla For?
Instrukcja „FOR LOOP” najlepiej sprawdza się, gdy chcesz wykonać kod określoną liczbę razy, a nie w oparciu o inne warunki.
W tej pętli zostanie określona dolna i górna granica i dopóki zmienna pętli będzie znajdować się pomiędzy tym zakresem, pętla zostanie wykonana.
Zmienna pętli jest samoinkrementująca, więc żadna jawna operacja inkrementacji nie jest potrzebna w tej pętli. Zmienna pętli nie musi być deklarowana, ponieważ jest deklarowana niejawnie.
FOR <loop_variable> in <lower_limit> .. <higher_limit> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
Wyjaśnienie składni:
- W powyższej składni słowo kluczowe „FOR” oznacza początek pętli, a „END LOOP” oznacza koniec pętli.
- Zmienna pętli jest oceniana za każdym razem przed wykonaniem części wykonawczej.
- Blok wykonawczy zawiera cały kod, który należy wykonać. Część wykonująca może zawierać dowolną instrukcję wykonania.
- Zmienna_pętli jest deklarowana niejawnie podczas wykonywania całej pętli, a zakres tej zmiennej_pętli będzie znajdować się tylko wewnątrz tej pętli.
- Jeśli zmienna pętli wyjdzie poza zakres, sterowanie wyjdzie z pętli.
- Pętlę można uruchomić w odwrotnej kolejności, dodając słowo kluczowe „REVERSE” przed dolnym limitem.
1 przykład: W tym przykładzie wydrukujemy liczbę od 1 do 5 za pomocą pętli FOR. W tym celu wykonamy następujący kod.
BEGIN dbms Qutput.put linef.Prp.gram started.' ); FOR a IN 1 .. 5 LOOP dbms_output.put_line(a); END LOOP: dbms_output.put_iine('Program completed.'); END; /
Wyjaśnienie kodu:
- Linia kodu 2: Drukowanie komunikatu „Program uruchomiony”.
- Linia kodu 3: Słowo kluczowe „FOR” oznacza początek pętli i deklarowana jest zmienna_pętli „a”. Będzie teraz mieć wartość od 1 do 5
- Linia kodu 5: Drukuje wartość „a”.
- Linia kodu 6: Słowo kluczowe „END LOOP” oznacza koniec bloku wykonawczego.
- Kod z linii 5 będzie wykonywany aż do osiągnięcia przez „a” wartości 6, gdyż warunek nie zostanie spełniony i sterowanie WYJDZIE z pętli.
- Linia kodu 7: Drukowanie oświadczenia „Program zakończony”
Pętle zagnieżdżone
Instrukcje pętli można także zagnieżdżać. Pętla zewnętrzna i wewnętrzna mogą być różnych typów. W pętli zagnieżdżonej, dla każdej wartości iteracji pętli zewnętrznej, pętla wewnętrzna zostanie w pełni wykonana.
LOOP -outer <execution block starts> LOOP — inner <execution_part> END LOOP; <execution_block_ends> END LOOP;
Wyjaśnienie składni:
- W powyższej składni pętla zewnętrzna zawiera w sobie jeszcze jedną pętlę.
- Pętle mogą być dowolnego typu, a część funkcjonalności wykonania jest taka sama.
1 przykład: W tym przykładzie wydrukujemy liczbę od 1 do 3 za pomocą pętli FOR. Każda liczba zostanie wydrukowana tyle razy, ile wynosi jej wartość. W tym celu wykonamy następujący kod.
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; /
Wyjaśnienie kodu:
- Linia kodu 2: Deklarowanie zmiennej „b” jako typu danych „NUMBER”.
- Linia kodu 4: Drukowanie komunikatu „Program uruchomiony”.
- Linia kodu 5: Słowo kluczowe „FOR” oznacza początek pętli i deklarowana jest zmienna_pętli „a”. Będzie teraz mieć wartość od 1 do 3
- Linia kodu 7: Za każdym razem resetowanie wartości „b” do „1”.
- Linia kodu 8: Wewnętrzny pętla while sprawdza warunek a>=b.
- Linia kodu 10: Drukuje wartość „a”, o ile spełniony jest powyższy warunek.
- Linia kodu 14: Drukowanie oświadczenia „Program zakończony”
Podsumowanie
Pętla | Dla pętli |
---|---|
Kryteria WYJŚCIA | Wyjdź, gdy licznik osiągnie limit |
Stosowanie | Dobry do użycia, gdy znana jest liczba pętli do wykonania. |