Co to są pętle?
Pętle umożliwiają wykonanie określonej części kodu w programie żądaną liczbę razy.
W tym samouczku zobaczymy koncepcję pętli w PL / SQL i przepływ sterowania w pętlach. Nauczysz się-
- Wprowadzenie do koncepcji pętli
- Instrukcje sterowania pętlą
- Rodzaje pętli w PL / SQL
- Podstawowa instrukcja pętli
- Etykietowanie pętli
Wprowadzenie do koncepcji pętli
Koncepcja pętli zapewnia następujące korzyści w kodowaniu.
- Możliwość ponownego wykorzystania kodu
- Zmniejszony rozmiar kodu
- Łatwy przepływ kontroli
- Mniejsza złożoność
Poniższy diagram obrazowo przedstawia koncepcję zapętlenia
Na powyższym diagramie warunek pętli zostanie sprawdzony i dopóki warunek pętli jest spełniony, blok wykonania zostanie wykonany.
W każdej iteracji zmienna licznika pętli, która faktycznie decyduje o warunku pętli, powinna zostać zmodyfikowana, aby sterowanie opuściło pętlę. W niektórych przypadkach ta zmienna licznika pętli jest operatorem zwiększania / zmniejszania dla wstępnie zdefiniowanej liczby, aw niektórych przypadkach jest to warunek wyszukiwania, który wykonuje blok, dopóki go nie spełni.
Instrukcje sterowania pętlą
Przed zapoznaniem się z koncepcją pętli obowiązkowe jest zapoznanie się z instrukcjami sterującymi pętlami. Instrukcje sterujące pętlą to takie, które faktycznie kontrolują przepływ wykonywania wewnątrz pętli. Poniżej znajduje się szczegółowy opis instrukcji sterujących pętlą.
KONTYNTYNUJ
To słowo kluczowe wysyła instrukcję do silnika PL / SQL, że za każdym razem, gdy silnik PL / SQL napotka to słowo kluczowe wewnątrz pętli, pominie pozostały kod w bloku wykonawczym kodu, a następna iteracja rozpocznie się natychmiast. Będzie to używane głównie wtedy, gdy kod wewnątrz pętli chce zostać pominięty dla pewnych wartości iteracji.
WYJŚCIE / WYJŚCIE, GDY
To słowo kluczowe wysyła instrukcję do silnika PL / SQL, że za każdym razem, gdy silnik PL / SQL napotka to słowo kluczowe, natychmiast wyjdzie z bieżącej pętli. Jeśli silnik PL / SQL napotka EXIT w zagnieżdżonej pętli, to wyjdzie z pętli, w której został zdefiniowany, tj. W zagnieżdżonych pętlach, podanie EXIT w pętli wewnętrznej spowoduje tylko wyjście kontroli z pętli wewnętrznej, ale nie z zewnętrznej pętli. Po „EXIT WHEN” następuje wyrażenie, które daje wynik logiczny. Jeśli wynik jest PRAWDA, wówczas układ sterowania WYJŚCIE.
IŚĆ DO
Ta instrukcja przeniesie sterowanie do instrukcji oznaczonej etykietą („GOTO
- Przeniesienie sterowania można wykonać tylko w ramach podprogramów.
- Nie można przenieść kontroli z części obsługi wyjątków do części wykonawczej
Stosowanie tego oświadczenia nie jest zalecane, chyba że nie ma innych alternatyw, ponieważ śledzenie kontroli kodu będzie bardzo trudne w programie ze względu na przeniesienie kontroli z jednej części na inną.
Rodzaje pętli w PL / SQL
PL / SQL zapewnia następujące trzy typy pętli
- Podstawowa instrukcja pętli
- Instrukcja pętli
- Instrukcja pętli While
Podstawowa instrukcja pętli
Ta instrukcja pętli jest najprostszą strukturą pętli w PL / SQL. Blok wykonawczy zaczyna się słowem kluczowym „LOOP” i kończy słowem kluczowym „END LOOP”.
Warunek wyjścia należy podać wewnątrz tego bloku wykonawczego, aby sterować wyjściem z pętli.
Aby wyjść z pętli, konieczne jest jawne podanie słowa kluczowego EXIT w części wykonawczej.
LOOPObjaśnienie składni:END LOOP;
- W powyższej składni słowo kluczowe „LOOP” oznacza początek pętli, a „END LOOP” oznacza koniec pętli.
- Blok wykonania zawiera cały kod, który ma zostać wykonany, w tym warunek EXIT.
- Część wykonawcza może zawierać dowolną instrukcję wykonania.
Uwaga: Podstawowa instrukcja pętli bez słowa kluczowego EXIT będzie INFINITE-LOOP, która nigdy się nie zatrzyma.
Przykład 1 : W tym przykładzie wydrukujemy liczbę od 1 do 5 za pomocą instrukcji pętli podstawowej. W tym celu wykonamy następujący kod.
DECLAREa NUMBER:=1;BEGINdbms_output.put_line('Program started.');LOOPdbms_output.put_line(a);a:=a+1;EXIT WHEN a>5;END LOOP;dbms_output.put_line('Program completed');END:/
Objaśnienie kodu:
- Linia kodu 2 : Zadeklarowanie zmiennej „a” jako typu danych „LICZBA” i zainicjowanie jej wartością „1”.
- Linia kodu 4 : Drukowanie instrukcji „Program uruchomiony”.
- Linia kodu 5: Słowo kluczowe „LOOP” oznacza początek pętli.
- Linia kodu 6: Drukuje wartość „a”.
- Linia kodu 7: Zwiększa wartość „a” o +1.
- Linia kodu 8: sprawdza, czy wartość „a” jest większa niż 5.
- Linia kodu 9: słowo kluczowe „END LOOP” oznacza koniec bloku wykonania.
- Kod od linii 6 do linii 8 będzie wykonywany, aż „a” osiągnie wartość 6, ponieważ warunek zwróci TRUE, a sterowanie wyjdzie z pętli.
- Linia kodu 10: Drukowanie instrukcji „Program zakończony”
Etykietowanie pętli
W PL / SQL pętle można opisywać. Etykieta powinna być ujęta między „<<” i „>>”. Etykietowanie pętli, szczególnie w kodach pętli zagnieżdżonych, zapewni większą czytelność. Etykietę można podać w poleceniu EXIT, aby wyjść z tej konkretnej pętli. Używając etykiety, kontrolka może bezpośrednio opuścić zewnętrzną pętlę zagnieżdżonych pętli z dowolnego miejsca wewnątrz pętli, wydając polecenie wyjścia, po którym następuje etykieta pętli zewnętrznej.
<Objaśnienie składni:>LOOP . < > LOOP --inner END LOOP; . END LOOP;
- W powyższej składni pętla out ma w sobie jeszcze jedną pętlę.
- Etykiety „
>” i „< >” to etykiety tych pętli.
Przykład 1 : W tym przykładzie zamierzamy wypisać liczbę zaczynającą się od 1 za pomocą instrukcji pętli Basic. Każda liczba zostanie wydrukowana tyle razy, ile jej wartość. Górna granica serii jest ustalona w części deklaracji programu. Nauczmy się, jak możemy wykorzystać koncepcję etykiety, aby to osiągnąć. W tym celu wykonamy następujący kod
DECLAREa NUMBER:=0;b NUMBER;upper-limit NUMBER :=4;BEGINdbms_output.put_line(‘Program started.' );«outerloop» LOOPa:=a+1;b:=l;«inner loop»LOOPEXIT outer_loop WHEN a > upper_limit;dbms_output.put_line(a);b:=b+l;EXIT inner_loop WHEN b>a;END LOOP;END LOOP;dbms_output.put_line('Program completed.');END;/
Objaśnienie kodu:
- Linia kodu 2-3 : Zadeklarowanie zmiennej „a” i „b” jako typu danych „NUMBER”.
- Linia kodu 4 : Zadeklarowanie zmiennej „upper_limit” jako typu danych „NUMBER” o wartości „4”
- Linia kodu 6 : Wydruk instrukcji „Program uruchomiony”.
- Linia kodu 7: zewnętrzna pętla została oznaczona jako „zewnętrzna pętla”
- Linia kodu 9: Wartość „a” jest zwiększana o 1.
- Linia kodu 11: Pętla wewnętrzna została oznaczona jako „inner_loop”.
- Linia kodu 13: warunek WYJŚCIA, który sprawdza, czy wartość „a” jest wyższa niż wartość „górny_limit”. Jeśli nie, pójdzie dalej, w przeciwnym razie bezpośrednio opuści zewnętrzną pętlę.
- Linia kodu 14: Drukowanie wartości „b”.
- Linia kodu 15: Zwiększa wartość „b” o +1.
- Linia kodu 16: warunek WYJŚCIA, który sprawdza, czy wartość „b” jest wyższa niż „a”. Jeśli tak, opuści kontrolę z pętli wewnętrznej.
- Linia kodu 14: Drukowanie instrukcji „Program zakończony”
Podsumowanie
Pętla | Pętla podstawowa |
Kryteria WYJŚCIA | Zakończ po napotkaniu słowa kluczowego „EXIT” w części wykonawczej |
Stosowanie | Dobry w użyciu, gdy wyjście nie jest oparte na żadnym określonym warunku. |