pl sql operators control statements tutorial
Lär dig om olika PL SQL-operatörer och kontrolluttalanden som if-then-else, för loop, while loop, etc. med exempelkodsexempel:
I PL / SQL-kommandon handledning av PL / SQL-serien , vi lärde oss kommandona PL SQL INSERT, UPDATE, DELETE och SELECT med programmeringsexempel.
I den här artikeln kommer vi att diskutera de olika operatörerna som PL / SQL stöder som relationsoperatörer, logiska, aritmetiska och jämförande operatörer. Vi ska också undersöka kontrolluttalanden som används i stor utsträckning i PL / SQL.
PL / SQL-tillstånd och iterativa strukturer har förklarats i detalj med exempel här i denna handledning.
den bästa mjukvaran för text till tal
Vad du kommer att lära dig:
PL SQL-operatörer
En PL SQL-operatör instruerar kompilatorn att göra aritmetiska och logiska operationer med hjälp av en symbol.
Som standard har PL / SQL följande operatörstyper:
- Aritmetisk
- Jämförelse
- Logisk
- Sträng
- Relationellt
# 1) Aritmetiska operatörer
Symbol | Beskrivning | |
---|---|---|
7 | OCH | samband |
+ | Utför tillägg av två operander. | |
* | Utför multiplikation av två operander. | |
/ | Utför uppdelning av två operander. | |
- | Utför subtraktion av två operander. | |
** | Utför exponentiell operation. |
Kodimplementering med aritmetiska operatörer:
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; /
Utgången från ovanstående kod ska vara:
# 2) Relationsoperatörer
Dessa operatörer utför jämförelse- och returvärdena på booleska.
Serienummer. | Symbol | Beskrivning |
---|---|---|
1 | > | Verifierar om värdet för vänster operand är större än höger. |
två | < | Verifierar om värdet för högeroperand är större än vänster. |
3 | > = | Verifierar om värdet för vänster operand är större än lika med höger. |
4 | <= | Verifierar om värdet för högeroperand är större än lika med vänster. |
5 | = | Verifierar om två operander är lika. |
6 | ! =, ~ =, | Verifierar om två operander inte är lika. |
Kodimplementering med relationsoperatörer:
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; /
Utgången från ovanstående kod ska vara:
# 3) Jämförelseoperatörer
Denna operatör ger utdata som antingen sant, falskt eller nollvärde baserat på resultatet av att jämföra ett uttalande med det andra.
Symbol | Beskrivning |
---|---|
MELLAN | Verifierar om ett värde ligger inom ett intervall. |
I | Verifierar om ett värde är lika med en medlemsuppsättning. |
TYCKA OM | Verifierar om en sträng eller ett tecken liknar ett mönster. |
ÄR INGET | Verifierar om en operand är lika med värdet Null. |
Kodimplementering med jämförelseoperatör:
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; /
Utgången från ovanstående kod ska vara:
# 4) Logiska operatörer
PL / SQL stöder mer än en logisk operatör. De agerar på operander som är booleska till sin natur och ger också booleska resultat.
Serienummer. | Symbol | Beskrivning |
---|---|---|
1 | INTE | Känd som logiskt INTE. Om resultatet är sant, gör det INTE falskt. |
två | OCH | Känd som logisk OCH. Om alla operander är sanna är resultatet sant. |
3 | ELLER | Känd som logisk ELLER. Om någon av operanderna är sanna är resultatet sant. |
Kodimplementering med logiska operatörer:
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; /
Utgången från ovanstående kod ska vara:
Operatörens företräde
PL SQL-operatörens företräde ställs in för att definiera hur en operation som involverar en eller flera operatörer eller mer än en operand ska göras. Operatörerna med högre prioritet beräknas först än de andra medan operatörerna med samma prioritet manipuleras i ingen speciell sekvens.
Tabellen nedan visar operatörerna från hög till låg prioritet.
Serienummer. | Symbol | Beskrivning |
---|---|---|
1 | ** | exponentiell operation |
två | +, - | addition, subtraktion |
3 | *, / | multiplikation, division |
4 | +, -, || | addition, subtraktion, sammanfogning |
5 | jämförelseoperatörer | |
6 | INTE | negation |
8 | ELLER | inkludering |
Kontrolluttalanden i PL / SQL
Kontrollstrukturerna i PL / SQL består av programstrukturer som iteration, sekvens, och urval . Formen för markering verifierar ett villkor, sedan baserat på resultaten av antingen sant eller falskt, behandlar nästa kodblock i ordning.
Formen av iteration kör ett block med kod eller uttalanden upprepade gånger tills villkoret är giltigt. Slutligen behandlar sekvensformerna påståendena en efter en i den ordning de är närvarande.
Villkor i PL SQL
I beslutsfattande scenarier används villkoren som IF-THEN, IF-THEN-ELSE, IF-THEN-ELSEIF och CASE.
# 1) OM-DAN: Detta är en av de grundläggande formerna av IF-uttalanden. Den innehåller ett kodblock med nyckelorden ENDIF och THEN. Om resultatet av ett villkor är sant, körs nästa kodblock ut annars inte.
Struktur för IF-THEN:
IF condition THEN Block of code END IF;
Vi kan också hålla ett kort IF-THEN-block på en enda rad som denna.
IF big > small THEN temp: = big; END IF;
Kodimplementering med 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; /
Utgången från ovanstående kod ska vara:
# 2) IF-THEN-ELSE: Detta är nästa form av IF-uttalande som har nyckelordet ELSE och sedan nästa kodblock. Detta block av ELSE-uttalanden är valfritt och det körs när villkoret är FALSE.
Struktur för IF-THEN-ELSE:
IF condition THEN Block of code 1 ELSE Block of code 2 END IF;
Kodimplementering med 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; /
Utgången från ovanstående kod ska vara:
# 3) IF-THEN-ELSIF: Detta villkorliga uttalande ger möjlighet att välja bland alternativen. ELSE ... ELSE-kodblock kan valfritt komma efter IF-THEN-uttalandet. Således används den när det handlar om flera ömsesidigt exklusiva val.
Ett IF-THEN-kodblock kan ha inga eller flera ELSIF, förutsatt att de visas före ELSE-uttalandet. När vi väl stöter på ett verkligt tillstånd i ett ELSIF-block ignoreras andra ELSE- eller ELSIF-värden.
Struktur för 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;
Kodimplementering med 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; /
Utgången från ovanstående kod är:
# 4) MÅLFÖRKLARING: Detta villkorliga uttalande väljer ett kodblock från valen. Liksom IF-uttalanden använder CASE inte boolesk input, utan ett uttryck som hjälper till att välja ett av alternativen.
Det sista valet i CASE-uttalandet är standard. MÅLFÖRKLARING är effektivare och mindre långt jämfört med IF-uttalanden.
Uppbyggnad av fall:
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;
Kodimplementering med 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; /
Utgången från ovanstående kod är:
# 5) SÖKT FALL uttalande: Detta villkorliga uttalande saknar någon väljare och NÄR blocket av kod ger bara booleska resultat och inte något värde för andra datatyper.
Strukturen för SÖKT FALL uttalande:
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;
Kodimplementering med SEARCHED CASE-uttalande:
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; /
Utgången från ovanstående kod ska vara:
# 6) INNESTAD OM-DAN-ELSE: Detta villkorliga uttalande ger möjlighet att använda ELSE IF eller IF-block inom en annan IF eller ELSE IF.
Strukturen för NESTED IF-THEN-ELSE:
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;
Kodimplementering med 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; /
Utgången från ovanstående kod ska vara:
Iterativt uttalande i PL SQL
När vi implementerar logik i PL / SQL kan vi behöva behandla ett kodblock flera gånger. Detta uppnås med hjälp av LOOP-uttalanden. Dessa är av tre typer, FOR-LOOP, WHILE-LOOP och LOOP.
# 1) PL SQL LOOPS
En LOOP har en grundläggande struktur enligt nedan:
LOOP Block of code END LOOP;
Efter varje iteration pekar programflödet tillbaka till toppen av slingan tills ett visst villkor är uppfyllt. Om vi vill komma ur slingan på grund av en situation kan i så fall ett EXIT-uttalande användas.
# 2) PL SQL MED LOPPA
Denna slinga kommer att köra ett kodblock flera gånger tills villkoret är giltigt. I början av varje iteration kontrolleras slingans tillstånd. Om det är uppfyllt körs kodblocket.
Om villkoret är noll eller inte uppfylls undviks slingan och nästa kodblock körs.
Struktur för WHILE LOOP:
WHILE condition LOOP Block of code END LOOP;
Kodimplementering med 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; /
Utgången från ovanstående kod ska vara:
# 3) PL SQL FÖR LOOP
Denna typ av slinga möjliggör exekvering av ett kodblock till ett visst antal gånger. Startsteget utförs en gång. Detta används främst för initialisering och deklarering av loopvariablerna. Därefter kontrolleras gränsvärdena (start- och slutintervall). Om villkoret är uppfyllt kommer kodblocket i LOOP att köras. Om inte flyttar programflödet till följande kodblock efter slingan.
Efter en iteration ökar eller minskar loopräknaren med en. Hela processen fortsätter tills slingan är uppfyllt. När villkoret blir FALSE slutar slingan.
I PL / SQL kan start- och slutområdet för slingan ändras vid körningstiden. Räknaren för slingan ska vara ett heltal, tal och så vidare (som kan ökas eller minskas numeriskt). Motvärdets startvärde kan vara vilket som helst tal.
Struktur för FOR LOOP:
FOR counter IN start_value .. end_value LOOP Block of code 1 END LOOP;
Kodimplementering av 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; /
Utgången från ovanstående kod ska vara:
# 4) NESTAD LOPPA
Denna typ av uttalande tillåter en slinga över den andra. Den externa och interna loopstrukturen kan vara av samma eller olika typer. Efter varje genomgång måste båda slingorna köras framgångsrikt.
Uppbyggnad av nästad slinga:
LOOP (outer) Block of code 1 LOOP (inner) Block of code 2 END LOOP; END LOOP;
Kodimplementering med 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; /
Utgången från ovanstående kod ska vara:
Loop-etiketter i PL / SQL
I PL / SQL har vi möjlighet att märka slingorna som ökar läsbarheten och betydelsen av koden. Etiketten representeras av dubbla vinkelfästen ( << och >> ) och nämns högst upp i LOOP-uttalandet. Etiketten kan också placeras i slutet av LOOP.
Etiketten kan också beskrivas för EXIT-uttalanden när den kommer ut ur slingan.
MÄRKNINGarnas struktur:
<> LOOP Block of Code END LOOP;
Kodimplementering med 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; /
Uttalanden om sekvenskontroll
Kontrolluttrycket används för att modifiera programmets exekveringsflöde.
# 1) AVSLUTA
Ett EXIT-uttalande bryter en slinga uttryckligen. När EXIT hittas i slingan bryts slingan och programflödet flyttas till nästa kodblock. Under förhållanden där vi använder kapslade slingor avslutar EXIT-satsen först den inre slingan och kör sedan kodblocket som visas omedelbart efter det.
Kodimplementering med 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; /
Utgången från ovanstående kod ska vara:
# 2) FORTSÄTT
Detta kontrollmeddelande gör att slingan kan komma ut och flytta till nästa iteration som ska äga rum.
Kodimplementering med FORTSÄTT:
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; /
Utgången från ovanstående kod ska vara:
# 3) GOTO
GOTO-uttalandet flyttar kontrollen till ett unikt märkt kodblock utan villkor. Det är inte en bra programmeringsteknik att använda GOTO-satser eftersom det minskar kodens läsbarhet och spårbarhet.
Struktur för GOTO:
GOTO 60; .. .. <> Block of code 1;
Kodning av implementering med GOTO-uttalandet:
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;
Utgången från ovanstående kod ska vara:
Vanliga frågor
F # 1) Vad är kontrolluttrycket i PL / SQL?
Svar: Kontrolluttrycken i PL / SQL är av de tre typerna - loop-uttalanden, sekventiella uttalanden och kontrolluttalanden. Loop-uttalandet består av WHILE LOOP, FOR LOOP och basic LOOP.
F # 2) Hur kontrollerar du om det finns jämställdhet i PL / SQL?
Svar: I PL / SQL har vi jämställdhetsoperatören som kontrollerar för jämställdhet.
Till exempel,
SELECT NAME FROM EMPLOYEE WHERE AGE = 50;
F # 3) Hur stoppar du en oändlig slinga i PL / SQL?
Svar: Vi kan stoppa en oändlig slinga i PL / SQL med hjälp av EXIT-uttalanden. Vi måste hålla EXIT-uttalandena inom slingan och inte utanför slingan.
F # 4) Vad är syftet med den villkorliga kontrollstrukturen i PL / SQL?
Svar: Den villkorliga kontrollstrukturen ger möjlighet att styra flödet av programmet beroende på vissa kriterier. Således körs inte koden i programmet. Ett kodblock körs baserat på villkoret.
F # 5) Vilka är de sex relationsoperatorerna?
Svar: Relationsoperatörerna för PL / SQL är =,,! =, ==.
F # 6) Vilka är de olika typerna av operatörer?
Svar: De olika typerna av operatörer i PL / SQL listas nedan:
- Bitvisa operatörer
- Uppdragsoperatörer
- Aritmetiska operatörer
- Relationsoperatörer
- Logiska operatörer
Slutsats
Vi har täckt en stor del av PL / SQL i denna handledning som behandlar ämnen som flera operatörer och deras betydelse med kodexempel.
Vi har också undersökt PL SQL-kontrolluttalanden i detalj. Kontrolluttalandena består av programstrukturer som iteration, tillstånd och sekvens.
I nästa handledning ska vi diskutera PL SQL-procedurer, funktioner, markörer och många fler relaterade ämnen.
Rekommenderad läsning
- PL SQL-handledning för nybörjare med exempel | Vad är PL / SQL
- Python-operatörer
- Unix villkorliga uttalanden: om sedan andra och relationsoperatörer
- Python Control Statements (Python Continue, Break and Pass)
- Handledning om C # villkorliga uttalanden
- Källkontroll eller versionskontroll i DevOps (Videohandledning del 2 - Block 2)
- Slingor i C #: Kontrollförklaringar och olika slingor med exempel
- Tortoise SVN Tutorial: Revisions In Code Repository