pl sql operators control statements tutorial
Dowiedz się o różnych operatorach PL SQL i instrukcjach sterujących, takich jak if-then-else, for loop, while loop itp. Z przykładowymi przykładami kodu:
w Polecenia PL / SQL samouczek Seria PL / SQL dowiedzieliśmy się o poleceniach PL SQL INSERT, UPDATE, DELETE i SELECT z przykładami programowania.
W tym artykule omówimy różne operatory obsługiwane przez PL / SQL, takie jak operatory relacyjne, logiczne, arytmetyczne i porównania. Zbadamy również instrukcje sterujące, które są szeroko stosowane w PL / SQL.
Warunek PL / SQL i struktury iteracyjne zostały szczegółowo wyjaśnione na przykładach w tym samouczku.
jak zostać liderem w książce
Czego się nauczysz:
PL Operatory SQL
Operator PL SQL kieruje kompilator do wykonywania operacji arytmetycznych i logicznych za pomocą symbolu.
Domyślnie PL / SQL ma następujące typy operatorów:
- Arytmetyka
- Porównanie
- Logiczny
- Strunowy
- Relacyjny
# 1) Operatory arytmetyczne
Symbol | Opis | |
---|---|---|
7 | I | spójnik |
+ | Dodaje dwa operandy. | |
* | Wykonuje mnożenie dwóch operandów. | |
/ | Wykonuje dzielenie dwóch operandów. | |
- | Wykonuje odejmowanie dwóch operandów. | |
** | Wykonuje operację wykładniczą. |
Implementacja kodu za pomocą operatorów arytmetycznych:
declare a number(5):= 2; b number(5):= 1; res number(10); sub number(10); mul number(10); div number(10); exp number(10); begin -- adding a and b and storing in res res:= a+b; -- subtracting b from a and storing in sub sub:= a-b; -- multiplying a and b and storing in mul mul:= a*b; -- dividing a and b and storing in div div:= a/b; -- exponential operation and storing in exp exp:= a**b; dbms_output.put_line('Sum value is '||res); dbms_output.put_line('Subtraction value is '||sub); dbms_output.put_line('Multiplication value is '||mul); dbms_output.put_line('Division value is '||div); dbms_output.put_line('Exponential value is '||exp); end; /
Wynik powyższego kodu powinien wyglądać następująco:
# 2) Operatory relacyjne
Te operatory wykonują porównanie i zwracają wartości w postaci logicznej.
Numer seryjny. | Symbol | Opis |
---|---|---|
1 | > | Sprawdza, czy wartość lewego operandu jest większa niż prawa. |
dwa | < | Sprawdza, czy wartość prawego operandu jest większa niż lewa. |
3 | > = | Sprawdza, czy wartość lewego operandu jest większa niż równa prawej. |
4 | <= | Sprawdza, czy wartość prawego operandu jest większa niż równa lewy. |
5 | = | Sprawdza, czy dwa operandy są równe. |
6 | ! =, ~ =, | Sprawdza, czy dwa operandy nie są równe. |
Implementacja kodu z operatorami relacyjnymi:
DECLARE a NUMBER := 5; b NUMBER := 12; BEGIN IF a != b THEN DBMS_OUTPUT.PUT_LINE('a is not equal to b'); ELSIF a = b THEN DBMS_OUTPUT.PUT_LINE('a is equal to b'); ELSE DBMS_OUTPUT.PUT_LINE ('Not sure of the input'); END IF; END; /
Wynik powyższego kodu powinien wyglądać następująco:
# 3) Operatory porównania
Ten operator podaje na wyjściu wartość true, false lub null na podstawie wyniku porównania jednej instrukcji z drugą.
Symbol | Opis |
---|---|
POMIĘDZY | Sprawdza, czy wartość mieści się w zakresie. |
W | Sprawdza, czy wartość jest równa zestawowi elementów. |
LUBIĆ | Sprawdza, czy ciąg lub znak jest podobny do wzorca. |
JEST NULL | Sprawdza, czy operand jest równy wartości Null. |
Implementacja kodu z operatorem porównania:
DECLARE i INTEGER; -- NULL value is set by default BEGIN i := i*5; -- i is still NULL since NULL * 5 is NULL IF i IS NULL THEN DBMS_OUTPUT.PUT_LINE('i is NULL.'); END IF; END; /
Wynik powyższego kodu powinien wyglądać następująco:
# 4) Operatory logiczne
PL / SQL obsługuje więcej niż jeden operator logiczny. Działają na operandach, które mają charakter boolowski i dają również wyniki boolowskie.
Numer seryjny. | Symbol | Opis |
---|---|---|
1 | NIE | Znany jako logiczne NIE. Jeśli wynik jest prawdziwy, NIE czyni go fałszywym. |
dwa | I | Znane jako logiczne AND. Jeśli wszystkie operandy są prawdziwe, wynik jest prawdziwy. |
3 | LUB | Znany jako logiczne LUB. Jeśli którykolwiek z operandów jest prawdziwy, wynik jest prawdziwy. |
Implementacja kodu za pomocą operatorów logicznych:
declare n1 number := 5; n2 number := 10; n3 number := 15; begin if (n1 n2 or n1 = 5) then dbms_output.put_line ('The condition is true'); else dbms_output.put_line ('The condition is false'); end if; end; /
Wynik powyższego kodu powinien wyglądać następująco:
Pierwszeństwo operatora
Priorytet operatorów PL SQL jest ustawiony w celu zdefiniowania sposobu wykonania operacji obejmującej jeden lub wiele operatorów lub więcej niż jeden operand. Operatory o wyższym priorytecie są obliczane jako pierwsze niż inne, podczas gdy operatory o tym samym priorytecie są przetwarzane w żadnej określonej kolejności.
Poniższa tabela zawiera listę operatorów od wysokiego do niskiego priorytetu.
Numer seryjny. | Symbol | Opis |
---|---|---|
1 | ** | operacja wykładnicza |
dwa | +, - | dodawanie odejmowanie |
3 | *, / | mnożenie, dzielenie |
4 | +, -, || | dodawanie, odejmowanie, łączenie |
5 | operatory porównania | |
6 | NIE | negacja |
8 | LUB | włączenie |
Instrukcje sterujące w PL / SQL
Struktury sterujące w PL / SQL składają się ze struktur programu, takich jak iteracja, sekwencja, i wybór . Forma selekcji weryfikuje warunek, a następnie na podstawie wyników true lub false przetwarza następny blok kodu w kolejności.
Forma iteracji wielokrotnie uruchamia blok kodu lub instrukcje, dopóki warunek nie zostanie spełniony. Wreszcie forma sekwencji przetwarza instrukcje jedno po drugim w kolejności, w jakiej występują.
Instrukcja warunkowa w języku PL SQL
W scenariuszach decyzyjnych używane są instrukcje warunku, takie jak JEŻELI-TO, JEŻELI-TO-ELSEIF, JEŻELI-TO-ELSEIF i CASE.
# 1) JEŚLI-TO: To jedna z podstawowych form instrukcji IF. Zawiera blok kodu ze słowami kluczowymi ENDIF i THEN. Jeśli wynik warunku jest prawdziwy, następny blok kodu zostanie wykonany, w przeciwnym razie nie.
Struktura IF-THEN:
IF condition THEN Block of code END IF;
Możemy również trzymać krótki blok IF – THEN w jednej linii, tak jak to.
IF big > small THEN temp: = big; END IF;
Implementacja kodu za pomocą IF-THEN:
DECLARE i number(10,2) := 15; BEGIN -- checking the condition IF( i > 2 ) THEN -- true condition dbms_output.put_line('i is greater than 1 ' ); END IF; dbms_output.put_line('the numeric value of i is '|| i); END; /
Wynik powyższego kodu powinien wyglądać następująco:
# 2) JEŻELI-TO-INNIE: Jest to kolejna forma instrukcji IF, która zawiera słowo kluczowe ELSE, a następnie następny blok kodu. Ten blok instrukcji ELSE jest opcjonalny i jest wykonywany, gdy warunek ma wartość FALSE.
Struktura IF-TO-INNE:
IF condition THEN Block of code 1 ELSE Block of code 2 END IF;
Implementacja kodu za pomocą IF-THEN-ELSE:
DECLARE num number(10,2) := 150; BEGIN -- checking the condition IF( num > 100 ) THEN -- true condition dbms_output.put_line('num is greater than 100 '); ELSE dbms_output.put_line('num is lesser than 100 '); END IF; dbms_output.put_line('value of number is : ' || num); END; /
Wynik powyższego kodu powinien wyglądać następująco:
# 3) IF-THEN-ELSIF: Ta instrukcja warunkowa daje możliwość wyboru spośród alternatyw. ELSE… ELSE blok kodu może opcjonalnie występować po instrukcji IF-THEN. Dlatego jest używany w przypadku wielu wzajemnie wykluczających się wyborów.
Blok kodu IF-THEN może nie zawierać żadnych elementów ELSIF lub mieć ich wiele, pod warunkiem, że występują one przed instrukcją ELSE. Gdy napotkamy prawdziwy warunek w jednym bloku ELSIF, inne ELSE lub ELSIF zostaną zignorowane.
Struktura IF-THEN-ELSIF:
IF condition 1 THEN Block of code 1 ELSIF condition 2 THEN Block of code 2 ELSE Block of code 3 END IF;
Implementacja kodu za pomocą IF-THEN-ELSIF:
DECLARE num number(8,2) := 20; BEGIN IF ( num <15 ) THEN dbms_output.put_line('The num is greater than 15' ); ELSIF ( num = 15 ) THEN dbms_output.put_line('The num is 15' ); ELSIF ( num <= 20 ) THEN dbms_output.put_line('The num is less than equal to 20'); ELSE dbms_output.put_line('The num is invalid '); END IF; dbms_output.put_line('The num is : '|| num); END; /
Wynik powyższego kodu to:
# 4) OPIS PRZYPADKU: Ta instrukcja warunkowa wybierze jeden blok kodu spośród dostępnych opcji. Jednak, podobnie jak w przypadku instrukcji IF, CASE nie używa danych wejściowych typu Boolean, ale wyrażenie, które pomaga wybrać jedną z opcji.
Ostatni wybór instrukcji CASE jest domyślny. CASE STATEMENT jest bardziej wydajne i krótsze w porównaniu do instrukcji IF.
Struktura OŚWIADCZENIA:
CASE selector WHEN 'condition 1' THEN block of code 1; WHEN 'condition2' THEN block of code 2; WHEN 'condition 3' THEN block of code 3; ... ELSE default case END CASE;
Implementacja kodu z CASE STATEMENT:
DECLARE age number(5) := 15; BEGIN CASE age when '1' then dbms_output.put_line('Infant'); when '5' then dbms_output.put_line('In school'); when '15' then dbms_output.put_line('High school'); else dbms_output.put_line('Qualified for class 10 '); END CASE; END; /
Wynik powyższego kodu to:
# 5) Oświadczenie SEARCHED CASE: Ta instrukcja warunkowa jest pozbawiona jakiegokolwiek selektora, a blok kodu WHEN podaje tylko wyniki logiczne, a nie wartości innych typów danych.
Struktura stwierdzenia SEARCHED CASE:
CASE WHEN 'condition 1' THEN block of code 1; WHEN 'condition 2' THEN block of code 2; WHEN 'condition 3' THEN block of code 3; ... ELSE default case END CASE;
Implementacja kodu z instrukcją SEARCHED CASE:
DECLARE model varchar(10) := '4'; BEGIN case when model = '1' then dbms_output.put_line('FIAT'); when model = '2' then dbms_output.put_line('TOYOTA'); when model = '3' then dbms_output.put_line('MARUTI'); when model = '4' then dbms_output.put_line('HYUNDAI'); else dbms_output.put_line('Premium MODEL'); end case; END; /
Wynik powyższego kodu powinien wyglądać następująco:
# 6) ZAGNIEŻDŻONE, JEŚLI-TO-JESZCZE: Ta instrukcja warunkowa zapewnia możliwość wykorzystania bloku ELSE IF lub IF w ramach innego IF lub ELSE IF.
Struktura zagnieżdżonych, JEŚLI-TO-INNIE:
IF condition 1 THEN Block of code 1 IF condition 2 THEN Block of code 2 END IF; ELSE Block of code 3 when condition 1 is false END IF;
Implementacja kodu za pomocą NESTED IF-THEN-ELSE:
DECLARE i number(10,2) := 65; j number(5) := 10; BEGIN -- checking the condition IF( i > 50 ) THEN -- if true move to the next IF statement IF( j <15 ) THEN dbms_output.put_line('In the nested if block' ); END IF; END IF; dbms_output.put_line('The value of first number is : ' || i ); dbms_output.put_line('The value of second number is : ' || j ); END; /
Wynik powyższego kodu powinien wyglądać następująco:
Instrukcja iteracyjna w PL SQL
Wdrażając logikę w PL / SQL, możemy wymagać kilkukrotnego przetwarzania bloku kodu. Osiąga się to za pomocą instrukcji LOOP. Są to trzy typy, FOR-LOOP, WHILE-LOOP i LOOP.
1) PL SQL LOOPS
PĘTLA ma podstawową strukturę, jak poniżej:
LOOP Block of code END LOOP;
Po każdej iteracji przepływ programu wskazuje z powrotem na początek pętli, aż do spełnienia określonego warunku. W przypadku, gdy chcemy wyjść z pętli z powodu sytuacji, w takim przypadku można użyć instrukcji EXIT.
# 2) PL SQL WHILE LOOP
Ta pętla uruchomi blok kodu wiele razy, aż warunek będzie ważny. Na początku każdej iteracji sprawdzany jest warunek pętli. Jeśli jest spełniony, wykonywany jest blok kodu.
Jeśli warunek jest pusty lub nie jest spełniony, pętla jest pomijana i wykonywany jest następny blok kodu.
Struktura WHILE LOOP:
WHILE condition LOOP Block of code END LOOP;
Implementacja kodu z WHILE LOOP:
DECLARE num number(10,1) := 3; BEGIN WHILE num <4 LOOP dbms_output.put_line('The value of number: ' || num); num := num + 1; END LOOP; END; /
Wynik powyższego kodu powinien wyglądać następująco:
# 3) PL SQL FOR LOOP
Ten typ pętli pozwala na wykonanie bloku kodu określoną liczbę razy. Krok początkowy jest wykonywany raz. Jest to używane głównie do inicjowania i deklarowania zmiennych pętli. Następnie sprawdzane są wartości graniczne (zakres początkowy i końcowy). Jeśli warunek zostanie spełniony, zostanie wykonany blok kodu wewnątrz LOOP. Jeśli nie, przepływ programu przechodzi do następnego bloku kodu po pętli.
Po jednej iteracji licznik pętli zwiększa się lub zmniejsza o jeden. Cały proces trwa do momentu spełnienia warunku pętli. Gdy warunek stanie się FAŁSZ, pętla się kończy.
W PL / SQL początkowy i końcowy zakres pętli można zmienić w czasie wykonywania. Licznik pętli powinien być liczbą całkowitą, liczbą itd. (Którą można liczbowo zwiększyć lub zmniejszyć). Wartość początkowa zmiennej licznika może być dowolną liczbą.
Struktura FOR LOOP:
FOR counter IN start_value .. end_value LOOP Block of code 1 END LOOP;
Implementacja kodu FOR LOOP:
DECLARE num number(10,1); BEGIN FOR num in 1.. 5 LOOP dbms_output.put_line('The num is:' || num); END LOOP; END; /
Wynik powyższego kodu powinien wyglądać następująco:
# 4) ZAGNIEŻDŻONA PĘTLA
Ten typ instrukcji dopuszcza jedną pętlę nad drugą. Struktura pętli zewnętrznej i wewnętrznej może być tego samego lub różnych typów. Po każdym przejściu obie pętle muszą działać pomyślnie.
Struktura zagnieżdżonej pętli:
LOOP (outer) Block of code 1 LOOP (inner) Block of code 2 END LOOP; END LOOP;
Implementacja kodu z NESTED LOOP:
BEGIN FOR i IN 1..2 LOOP FOR j IN 1..2 LOOP DBMS_OUTPUT.PUT_LINE('The value of i is ' || i); DBMS_OUTPUT.PUT_LINE('The value of j is ' || j); END LOOP; END LOOP; END; /
Wynik powyższego kodu powinien wyglądać następująco:
Etykiety pętli w PL / SQL
W PL / SQL mamy możliwość oznaczania pętli, co zwiększa czytelność i znaczenie kodu. Etykieta jest reprezentowana przez podwójne nawiasy ostre ( << i >> ) i są wymienione u góry instrukcji LOOP. Etykietę można również umieścić na końcu LOOP.
Etykietę można również opisać dla instrukcji EXIT podczas wychodzenia z pętli.
Struktura ETYKIET:
<> LOOP Block of Code END LOOP;
Implementacja kodu z LOOP LABEL:
BEGIN <> FOR i IN 1..2 LOOP <> FOR j IN 1..2 LOOP DBMS_OUTPUT.PUT_LINE('The value of i is ' || i); DBMS_OUTPUT.PUT_LINE('The value of j is ' || j); END LOOP; END LOOP; END; /
Instrukcje kontroli sekwencji
Instrukcja sterująca służy do modyfikowania przebiegu wykonywania programu.
# 1) WYJDŹ
Instrukcja EXIT jawnie przerywa pętlę. Gdy w pętli zostanie znalezione EXIT, pętla zostaje przerwana, a przepływ programu przechodzi do następnego bloku kodu. W warunkach, w których używamy zagnieżdżonych pętli, instrukcja EXIT najpierw przerywa wewnętrzną pętlę, a następnie wykonuje blok kodu, który pojawia się bezpośrednio po niej.
Implementacja kodu z EXIT:
DECLARE num number(10,1) := 15; BEGIN -- loop condition WHILE num <20 LOOP dbms_output.put_line ('The num is: ' || num); num := num + 1; IF mod(num, 2) = 0 THEN -- exit from loop EXIT; END IF; END LOOP; END; /
Wynik powyższego kodu powinien wyglądać następująco:
# 2) KONTYNUUJ
Ta instrukcja sterująca umożliwia wyjście pętli i przejście do następnej iteracji.
Implementacja kodu z CONTINUE:
DECLARE num number(10,1) := 5; BEGIN -- while loop execution WHILE num <9 LOOP dbms_output.put_line ('The number is : ' || num); num := num + 1; IF mod(num,2) = 0 THEN num := num + 1; CONTINUE; END IF; END LOOP; END; /
Wynik powyższego kodu powinien wyglądać następująco:
# 3) GOTO
Instrukcja GOTO bezwarunkowo przenosi formant do unikatowego bloku kodu z etykietą. Używanie instrukcji GOTO nie jest dobrą techniką programowania, ponieważ ogranicza to czytelność i identyfikowalność kodu.
Struktura GOTO:
GOTO 60; .. .. <> Block of code 1;
Implementacja kodowania z instrukcją GOTO:
BEGIN GOTO message_two; <> DBMS_OUTPUT.PUT_LINE( 'PLSQL Tutorial' ); GOTO message_third; <> DBMS_OUTPUT.PUT_LINE( 'Software Test Help!' ); GOTO message_one; <> DBMS_OUTPUT.PUT_LINE( 'PLSQL Control Statement' ); END;
Wynik powyższego kodu powinien wyglądać następująco:
Często Zadawane Pytania
P # 1) Jaka jest instrukcja sterująca w PL / SQL?
Odpowiedź: Instrukcje sterujące w PL / SQL są trzech typów - instrukcje pętli, instrukcje sekwencyjne i instrukcje sterujące. Instrukcja pętli składa się z WHILE LOOP, FOR LOOP i podstawowej LOOP.
Pytanie nr 2) Jak sprawdzić równość w PL / SQL?
Odpowiedź: W PL / SQL mamy operator równości, który sprawdza równość.
Na przykład,
SELECT NAME FROM EMPLOYEE WHERE AGE = 50;
Pytanie 3) Jak zatrzymać nieskończoną pętlę w PL / SQL?
Odpowiedź: Możemy zatrzymać nieskończoną pętlę w PL / SQL za pomocą instrukcji EXIT. Musimy trzymać instrukcje EXIT wewnątrz pętli, a nie poza nią.
Q # 4) Jaki jest cel warunkowej struktury sterowania w PL / SQL?
Odpowiedź: Struktura sterowania warunkowego daje możliwość sterowania przepływem programu w zależności od pewnych kryteriów. Zatem kod w programie nie jest uruchamiany sekwencyjnie. Blok kodu jest wykonywany na podstawie warunku.
P # 5) Jakie jest 6 operatorów relacyjnych?
Odpowiedź: Operatory relacyjne PL / SQL to =,,! =, ==.
P # 6) Jakie są różne typy operatorów?
Odpowiedź: Poniżej wymieniono różne typy operatorów w PL / SQL:
- Operatory bitowe
- Operatory przypisania
- Operatory arytmetyczne
- Operatorzy relacyjni
- Operatory logiczne
Wniosek
W tym samouczku omówiliśmy dużą część języka PL / SQL, zajmując się takimi tematami, jak wiele operatorów i ich znaczenie z przykładami kodu.
Ponadto szczegółowo zbadaliśmy instrukcje sterujące języka PL SQL. Instrukcje sterujące składają się ze struktur programu, takich jak iteracja, warunek i sekwencja.
W następnym samouczku omówimy procedury języka PL SQL, funkcje, kursory i wiele innych powiązanych tematów.
rekomendowane lektury
- Samouczek języka PL SQL dla początkujących z przykładami | Co to jest PL / SQL
- Operatory Pythona
- Instrukcje warunkowe systemu Unix: If Then Else i operatory relacyjne
- Instrukcje sterujące w języku Python (Python Continue, Break and Pass)
- Samouczek dotyczący instrukcji warunkowych języka C #
- Kontrola źródła lub kontrola wersji w DevOps (samouczek wideo, część 2 - blok 2)
- Pętle w C #: instrukcje sterujące i różne pętle z przykładami
- Samouczek Tortoise SVN: Zmiany w repozytorium kodu