Oracle PL / SQL OM DAN ÄN ANDRA Uttalande: ELSIF, NESTED-IF

Innehållsförteckning:

Anonim

Vad är beslutsfattande?

Beslutsuttalanden är de som bestämmer flödeskontrollen av SQL-uttalanden baserat på villkoren. Det ger programmeraren bättre kontroll över att förhindra att en viss kod körs (diagram 1) eller väljer en önskad kod baserat på tillståndet (diagram 2). Nedan följer den bildliga framställningen av "Statement of Decision Making".

Diagram över beslutsfattande

Typer av uttalanden om beslutsfattande:

Oracle tillhandahåller följande typer av beslutsuttalanden.

  • OM DÅ
  • OM DÅ ANNARS
  • IF-THEN-ELSIF
  • NESTED-IF
  • FALL
  • SÖKT FALL

I den här handledningen lär du dig-

  • Introduktion till beslutsfattande
  • IF-THEN uttalande
  • IF-THEN-ELSE uttalande
  • IF-THEN-ELSIF-uttalande
  • NESTED-IF-uttalande

IF-THEN uttalande

IF-THEN-uttalandet används främst för att exekvera ett visst avsnitt av koder endast när villkoret är uppfyllt.

Villkoret bör ge booleskt (sant / falskt). Det är ett grundläggande villkorligt uttalande som gör det möjligt för ORACLE att köra / hoppa över en viss kod baserat på de fördefinierade villkoren.

Syntax för om därefter uttalanden:

IF THEN-executed only if the condition returns TRUEEND if;
  • I ovanstående syntax kommer nyckelordet 'IF' att följas av ett tillstånd som utvärderas till 'TRUE' / 'FALSE'.
  • Kontrollen kör endast om villkoret returnerar .
  • I fallet med villkor utvärderas till kommer SQL att hoppa över och det kommer att börja köra koden bredvid "END IF" -blocket.

Obs: När villkor utvärderas till 'NULL' kommer SQL att behandla 'NULL' som 'FALSE'.

Exempel 1 : I det här exemplet ska vi skriva ut ett meddelande när antalet är större än 100. För det kommer vi att köra följande kod

För att skriva ut ett meddelande när ett nummer har mer än 100, kör vi följande kod.

DECLAREa NUMBER :=10;BEGINdbms_output.put_line(‘Program started.' );IF( a> 100 ) THENdbms_output.put_line('a is greater than 100');END IF;dbms_output.put_line(‘Program completed.');END;/

Kodförklaring:

  • Kodrad 2: Förklarar variabeln 'a' som 'NUMMER' datatyp och initierar den med värdet '10'.
  • Kodrad 4: Skriva ut påståendet "Programmet startade".
  • Kodrad 5: Kontroll av villkoret, om variabel 'a' är större än '100'.
  • Kodrad 6: Om 'a' är större än '100' kommer "a är större än 100" att skrivas ut. Om 'a' är mindre än eller lika med 100, misslyckas villkoret, så ovanstående utskriftsuttalande ignoreras.
  • Kodrad 8: Skriva ut påståendet "Programmet slutfört".

Kodutgång:

Program started.Program completed. 

Exempel 2: I det här exemplet ska vi skriva ut ett meddelande om ett givet alfabet finns i engelska vokaler (A, E, I, O, U).

För att skriva ut ett meddelande när det givna tecknet är vokal, kör vi följande kod.

DECLAREa CHAR(1) :=’u’;BEGINIF UPPER(a) in ('A’,'E','I','0','U' ) THENdbms_output.put_line(‘The character is in English Vowels');END IF;END;/

Kodförklaring:

  • Kodrad 2: Förklarar variabeln 'a' som 'CHAR' av datatyp storlek 1 och initierar den med värdet 'u'.
  • Kodrad 4: Kontroll av villkoret, om variabel 'a' finns i listan ('A', 'E', 'I', 'O', 'U').
  • Värdet på 'a' har konverterats till versaler innan det jämförs för att göra jämförelsen skiftlägeskänslig.
  • Kodrad 5: Om 'a' finns i listan kommer uttalandet "Tecknet är på engelska vokaler" att skrivas ut. Om villkoret misslyckades kommer detta program inte att ge någon utdata, eftersom vi inte har utfärdat något utskriftsmeddelande utanför IF-THEN-blocket.

Kodutgång:

The character is in English Vowels

IF-THEN-ELSE uttalande

  • IF-THEN-ELSE-uttalandet används huvudsakligen för att välja mellan två alternativ baserat på tillståndet.
  • Nedan är syntaxrepresentationen av IF-THEN-ELSE-uttalandet.

Syntax för IF-THEN-ELSE-uttalanden:

IF THEN -executed only if the condition returns TRUE ELSE -execute if the condition failed (returns FALSE) END if;
  • I ovanstående syntax kommer nyckelordet 'IF' att följas av ett tillstånd som utvärderas till 'TRUE' / 'FALSE'.
  • Kontrollen kör endast om villkoret returnerar .
  • I händelse av tillstånd utvärderas till kommer SQL att köra .
  • I vilket fall som helst kommer ett av de två åtgärdsblocken att köras.

Obs! När villkor utvärderas till 'NULL', kommer SQL att behandla 'NULL' som 'FALSE'.

Exempel 1 : I det här exemplet ska vi skriva ut meddelandet om det angivna numret är udda eller jämnt.

DECLAREa NUMBER:=11;BEGINdbms_output.put_line (‘Program started');IF( mod(a,2)=0) THENdbms_output.put_line('a is even number' );ELSEdbms_output.put_line('a is odd number1);END IF;dbms_output.put_line (‘Program completed.’);END;/

Kodförklaring:

  • Kodrad 2: Förklarar variabeln 'a' som 'NUMMER' datatyp och initialiserar den med värdet '11'.
  • Kodrad 4: Skriva ut påståendet "Programmet startade".
  • Kodrad 5: Kontroll av villkoret, om modulen för variabeln 'a' med '2' är 0.
  • Kodrad 6: Om "0" kommer "a är jämnt nummer" skrivas ut.
  • Kodrad 7: Om modulvärdet inte är lika med '0' returnerar villkoret , så meddelandet "a är udda nummer" kommer att skrivas ut.
  • Kodrad 10: Skriva ut påståendet "Programmet slutfört"

Kodutgång:

Program started.a is odd numberProgram completed. 

IF-THEN-ELSIF-uttalande

  • IF-THEN-ELSIF-uttalandet används huvudsakligen där ett alternativ ska väljas från en uppsättning alternativ, där varje alternativ har sina egna villkor att uppfylla.
  • De första villkoren som returnerar kommer att köras och de återstående villkoren hoppas över.
  • IF-THEN-ELSIF-uttalandet kan innehålla "ELSE" -block i det. Detta "ELSE" -block kommer att utföras om inget av villkoren är uppfyllt.

Obs! ELSE-blocket är valfritt i detta villkorliga uttalande. Om det inte finns något ELSE-block, och inget av villkoret uppfylls, hoppar styrenheten över hela åtgärdsblocket och börjar köra den återstående delen av koden.

Syntax för IF-THEN-ELSIF-uttalanden:

IF THEN-executed only if the condition returns TRUE ELSIF  ELSIF  ELSE -optionalEND if;
  • I ovanstående syntax körs kontrollen endast om villkoret 1 returnerar .
  • Om villkor1 inte är uppfyllt, kontrollerar styrenheten om det är villkor2.
  • Styrenheten kommer att lämna IF-uttalandet i följande två fall.
    • När styrenheten hittade något villkor som returnerar . I det här fallet kommer motsvarande action_block att köras och styrenheten kommer att avsluta detta IF-satsblock och kommer att börja köra den återstående koden.
    • När inget av villkoren är uppfyllda kommer den dåvarande styrenheten att utföra ELSE-block om det finns, kommer sedan att gå ut från IF-uttalandet.

Obs! När villkor utvärderas till 'NULL', kommer SQL att behandla 'NULL' som 'FALSE'.

Exempel 1: Utan ELSE-block

I det här exemplet ska vi skriva ut betyget baserat på givna betyg utan annat villkor (markera> = 70 Betyg A, markera> = 40 och markera <70 Betyg B, markera> = 35 och markera <40 Betyg C).

DECLAREmark NUMBER :=55;BEGINdbms_output.put_line(‘Program started.’ );IF( mark >= 70) THENdbms_output.put_line(‘Grade A’);ELSIF(mark >= 40 AND mark < 70) THENdbms_output.put_line(‘Grade B');ELSIF(mark >=35 AND mark < 40) THENdbms_output.put_line(‘Grade C’);END IF;dbms_output.put_line(‘Program completed.’);END;/

Kodförklaring:

  • Kodrad 2: Förklarar variabeln "mark" som "NUMBER" datatyp och initialiserar den med värdet "55".
  • Kodrad 4: Skriva ut påståendet "Programmet startade".
  • Kodrad 5: Kontroll av villkor1, om 'mark' är större eller lika med 70.
  • Kodrad 7: Eftersom villkor1 misslyckades kontrolleras villkor2 '70> mark> = 40 '.
  • Kodrad 8: Condtition2 returnerar , därmed meddelandet "Grad B" kommer att skrivas ut.
  • Kodrad12: Utskrift av påståendet "Programmet slutfört".
  • I det här fallet hoppas villkoret 3 'mark <35' över eftersom kontrollern hittade ett tillstånd som returnerar före villkor3.

Kodutgång:

Program started.Grade BProgram completed.

Exempel 2 : Med ELSE-block

I det här exemplet ska vi skriva ut betyget baserat på givna betyg med annat villkor (märke> = 70 Betyg A, betyg> = 40 och markera <70 Betyg B, betyg> = 35 och betyg <40 Betyg C, annars 'Inget betyg').

DECLAREmark NUMBER :=25;BEGINdbms_output.put_line(‘Program started.’ );IF( mark >= 70) THENdbms_output.put_line(‘Grade A’);ELSIF(mark >= 40 AND mark < 70) THENdbms_output.put_line(‘Grade B');ELSIF(mark >=35 AND mark < 40) THENdbms_output.put_line(‘Grade C);ELSEdbms_output.put_line(‘No Grade’);END IF;dbms_output.put_line(‘Program completed.' );END;/

Kodförklaring:

  • Kodrad 2: Förklarar variabeln "mark" som "NUMBER" datatyp och initialiserar den med värdet "25".
  • Kodrad 4: Skriva ut påståendet "Programmet startade".
  • Kodrad 5: Kontroll av villkor 1, om 'mark' är större eller lika med 70.
  • Kodrad 7: Eftersom villkor1 misslyckades kontrolleras villkor2 '70> mark> = 40 '.
  • Kodrad 8: Eftersom villkor2 misslyckades kontrolleras villkor3 '40> mark> = 35 '.
  • Kodrad 11: Eftersom alla villkor har misslyckats kommer kontrollen nu att kontrollera om det finns ELSE-block och det kommer att skriva ut meddelandet "No Grade" från ELSE-blocket.
  • Kodrad 14: Skriva ut påståendet "Programmet slutfört".

Kodutgång:

Program started.No GradeProgram completed.

NESTED-IF-uttalande

  • NESTED-IF-uttalandet tillåter i grunden programmerare att placera ett eller flera "IF" -villkor inuti ett annat "IF" -villkor annat än normala uttalanden.
  • Varje 'IF' -villkor bör ha ett separat 'END IF' -uttalande som markerar slutet på räckvidden för det specifika .
  • "IF" -uttalandet kommer att betrakta närmaste "END IF" -uttalande som en slutpunkt för det specifika tillståndet.
  • Bildrepresentationen för NESTED-IF visas nedanför diagrammet.
IF THEN -executed only if the condition returns TRUE  IF  THEN  END IF; -END IF corresponds to condition2END IF; -END IF corresponds to condition1
Syntaxförklaring:
  • I ovanstående syntax innehåller den yttre IF ytterligare ett IF-uttalande i sitt åtgärdsblock.
  • Villkoret 1 returnerar , då kör kontrollen och kontrollerar tillståndet2.
  • Om villkor2 också returnerar kommer också att köras.
  • I fall av villkor2 utvärderas till kommer SQL att hoppa över .

Här kommer vi att se ett exempel på Nested If -

Exempel på kapslad- Om uttalande: Störst av tre nummer

I det här exemplet ska vi skriva ut det största av tre siffror med hjälp av Nested-If-satsen. Numren kommer att tilldelas i deklarera delen, som du kan se i koden nedan, dvs. nummer = 10,15 och 20 och det maximala antalet kommer att hämtas med hjälp av kapslade if-uttalanden.

DECLAREa NUMBER :=10;b NUMBER :=15;c NUMBER :=20;BEGINdbms_output.put_line(‘Program started.' );IF( a> b)THEN/*Nested-if l */dbms_output.put_line(’Checking Nested-IF 1');IF( a> c ) THENdbms_output.put_line(‘A is greatest’);ELSEdbms_output.put_line(‘C is greatest’);END IF;ELSE/*Nested-if2 */dbms_output.put_line('Checking Nested-IF 2' );IF( b> c ) THENdbms_output.put_line(’B is greatest' );ELSEdbms_output.put_line(’C is greatest' );END IF;END IF;dbms_output.put_line(‘Program completed.’ );END;/

Kodförklaring:

  • Kodrad 2: Förklarar variabeln 'a' som 'NUMMER' datatyp och initierar den med värdet '10'.
  • Kodrad 3: Förklarar variabeln 'b' som 'NUMMER' datatyp och initierar den med värdet '15'.
  • Kodrad 4: Förklarar variabeln 'c' som 'NUMMER' datatyp och initierar den med värdet '20'.
  • Kodrad 6: Skriva ut påståendet "Program startat" (rad 6).
  • Kodrad 7: Kontroll av villkor1, om 'a' är större än 'b' (rad 7).
  • Kodrad 10: Om 'a' är större än 'b, kommer villkoret i' nestad-om 1 'att kontrollera om' a 'är större än' c '(rad 10).
  • Kodrad 13: Om fortfarande 'a' är större kommer meddelandet 'A är störst' att skrivas ut (rad 11). Annars om villkor2 misslyckas kommer 'C är störst' att skrivas ut (rad 13).
  • Kodrad 18: Om villkor1 returnerar falskt, kommer villkoret i "nestad-om 2" att kontrollera om "b" är större än "c" (rad 18).
  • Kodrad 21: Om 'b' är större än 'c' kommer meddelandet 'B är ​​störst' att skrivas ut (rad 19), annars om villkor 2 misslyckas kommer 'C är störst' att skrivas ut (rad 21).
  • Kodrad 24: Skriva ut påståendet "Programmet slutfört" (rad 24).

Utmatning av kod:

Program started.Checking Nested-IF 2C is greatestProgram completed.

Sammanfattning

I detta kapitel har vi lärt oss de olika beslutsuttalandena och deras syntax och exempel. Nedanstående tabell ger en sammanfattning av olika villkorliga uttalanden som vi har diskuterat.

TYP

BESKRIVNING

ANVÄNDANDE

OM DÅ

Kontrollerar om det finns ett booleskt tillstånd om SANT kod i 'THEN'-blocket kommer att köras.

För att hoppa över, / kör en viss kod baserat på villkoret.

OM DÅ ANNARS

Kontrollerar om det finns ett booleskt tillstånd, om SANT kod i "THEN" -blocket kommer att köras, om falsk kod i "ELSE" -block körs.

Mest lämplig i 'DETTA ELLER-DET-tillståndet.

IF-THEN-ELSIF

Kontrollerar efter ett booleskt tillstånd i sekventiell ordning. Det första blocket i sekvensen som returnerar SANT tillstånd kommer att köras. Om inget av villkoren i sekvensen är SANT, körs koden i 'ELSE' -blocket.

Används för att välja mellan mer än två alternativ mest.

NESTED-IF

Tillåter ett eller flera IF-THEN- eller IF-THEN-ELSIF-uttalanden i ett annat IF-THEN- eller IF-THEN-ELSIF-uttalande.

Används främst i kapslad situation.