Oracle PL / SQL IF THEN ELSE Statement: ELSIF, NESTED-IF

Indholdsfortegnelse:

Anonim

Hvad er beslutningsudtalelser?

Beslutningsbeslutninger er dem, der vil beslutte flow-kontrol af SQL-sætninger baseret på betingelserne. Det giver programmøren bedre kontrol med at forhindre en bestemt kode i at udføre (diagram 1) eller vælge en ønsket kode baseret på tilstanden (diagram 2). Nedenfor er den billedlige gengivelse af "Statement of Decision Making".

Diagram over beslutningstagning

Typer af beslutningsudtalelser:

Oracle leverer følgende typer beslutningsudtalelser.

  • HVIS SÅ
  • IF-THEN-ELSE
  • IF-THEN-ELSIF
  • NESTED-IF
  • SAG
  • SØGT SAG

I denne vejledning lærer du-

  • Introduktion til beslutningsudtalelser
  • IF-THEN-erklæring
  • IF-THEN-ELSE-erklæring
  • IF-THEN-ELSIF-erklæring
  • NESTED-IF-erklæring

IF-THEN-erklæring

IF-THEN-erklæringen bruges hovedsageligt kun til at udføre et bestemt afsnit af koder, når betingelsen er opfyldt.

Betingelsen skal give boolsk (sand / falsk). Det er en grundlæggende betinget erklæring, der giver ORACLE mulighed for at udføre / springe et bestemt stykke kode over på de foruddefinerede betingelser.

Syntaks for IF THEN Statements:

IF THEN-executed only if the condition returns TRUEEND if;
  • I ovenstående syntaks efterfølges nøgleordet 'IF' af en betingelse, der evalueres til 'SAND' / 'FALSK'.
  • Kontrolelementet udfører kun , hvis betingelsen returnerer .
  • I tilfælde af en tilstand, der evalueres til , springer SQL over, og den begynder at udføre koden ved siden af ​​'END IF' -blokken.

Bemærk: Når tilstand evalueres til 'NULL', vil SQL behandle 'NULL' som 'FALSE'.

Eksempel 1 : I dette eksempel skal vi udskrive en besked, når antallet er større end 100. For det vil vi udføre følgende kode

For at udskrive en besked, når et tal har en værdi på mere end 100, udfører vi følgende kode.

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;/

Kode Forklaring:

  • Kodelinje 2: Erklærer variablen 'a' som 'NUMBER' datatype og initialiserer den med værdien '10'.
  • Kodelinje 4: Udskrivning af udsagnet "Program startet".
  • Kodelinje 5: Kontrol af tilstanden, om variablen 'a' er større end '100.'
  • Kodelinje 6: Hvis 'a' er større end '100', udskrives "a er større end 100". Hvis 'a' er mindre end eller lig med 100, mislykkes betingelsen, så ovenstående udskrivningsudsagn ignoreres.
  • Kodelinje 8: Udskrivning af udsagnet "Program afsluttet".

Kodeoutput:

Program started.Program completed. 

Eksempel 2: I dette eksempel skal vi udskrive en besked, hvis et givet alfabet er til stede i engelske vokaler (A, E, I, O, U).

For at udskrive en besked, når det givne tegn er vokal, udfører vi følgende kode.

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;/

Kode Forklaring:

  • Kodelinje 2: Erklærer variablen 'a' som 'CHAR' af datatypen størrelse '1' og initialiserer den med værdien 'u'.
  • Kodelinje 4: Kontrol af betingelsen, om variablen 'a' er til stede i listen ('A', 'E', 'I', 'O', 'U').
  • Værdien af ​​'a' er blevet konverteret til store bogstaver, før sammenligning for at gøre sammenligningen ikke store og små bogstaver.
  • Kodelinje 5: Hvis 'a' er til stede på listen, vil udsagnet "Tegnet er på engelske vokaler" blive udskrevet. Hvis tilstanden mislykkedes, vil dette program ikke give nogen output, da vi uden for IF-THEN-blokken ikke har udsendt nogen udskrivningserklæring.

Kodeoutput:

The character is in English Vowels

IF-THEN-ELSE-erklæring

  • IF-THEN-ELSE-erklæringen bruges hovedsageligt til at vælge mellem to alternativer baseret på tilstanden.
  • Nedenfor er syntaksrepræsentationen af ​​IF-THEN-ELSE-sætningen.

Syntaks for IF-THEN-ELSE-udsagn:

IF THEN -executed only if the condition returns TRUE ELSE -execute if the condition failed (returns FALSE) END if;
  • I ovenstående syntaks efterfølges nøgleordet 'IF' af en betingelse, der evalueres til 'SAND' / 'FALSK'.
  • Kontrollen udfører kun , hvis betingelsen returnerer .
  • I tilfælde af en tilstand, der evalueres til , vil SQL udføre .
  • Under alle omstændigheder udføres en af ​​de to handlingsblokke.

Bemærk: Når tilstand evalueres til 'NULL', vil SQL behandle 'NULL' som 'FALSE'.

Eksempel 1 : I dette eksempel skal vi udskrive besked, om det givne tal er ulige eller lige.

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;/

Kode Forklaring:

  • Kodelinje 2: Erklærer variablen 'a' som 'NUMBER' datatype og initialiserer den med værdien '11'.
  • Kodelinje 4: Udskrivning af udsagnet "Program startet".
  • Kodelinje 5: Kontrol af tilstanden, om modulet for variablen 'a' med '2' er 0.
  • Kodelinje 6: Hvis '0', udskrives "a er lige tal".
  • Kodelinje 7: Hvis modulværdien ikke er lig med '0', returnerer betingelsen , så meddelelsen "a er ulige tal" udskrives.
  • Kodelinje 10: Udskrivning af udsagnet "Programmet afsluttet"

Kodeoutput:

Program started.a is odd numberProgram completed. 

IF-THEN-ELSIF-erklæring

  • IF-THEN-ELSIF-erklæringen bruges hovedsageligt, hvor et alternativ skal vælges blandt et sæt alternativer, hvor hvert alternativ har sine egne betingelser, der skal opfyldes.
  • De første betingelser, der returnerer , udføres, og de resterende betingelser springes over.
  • IF-THEN-ELSIF-sætningen kan indeholde 'ELSE' -blok i den. Denne 'ELSE'-blok udføres, hvis ingen af ​​betingelserne er opfyldt.

Bemærk : ELSE-blok er valgfri i denne betingede erklæring. Hvis der ikke er nogen ELSE-blok, og ingen af ​​betingelserne er opfyldt, springer controlleren over hele handlingsblokken og begynder at udføre den resterende del af koden.

Syntaks for IF-THEN-ELSIF-udsagn:

IF THEN-executed only if the condition returns TRUE ELSIF  ELSIF  ELSE -optionalEND if;
  • I ovenstående syntaks udfører kontrolelementet kun , hvis betingelse1 returnerer .
  • Hvis betingelse1 ikke er opfyldt, kontrollerer controlleren for tilstand2.
  • Controlleren forlader IF-erklæringen i de følgende to tilfælde.
    • Når controlleren fandt en tilstand, der returnerer . I dette tilfælde udføres den tilsvarende action_block, og controlleren forlader denne IF-sætningsblok og begynder at udføre den resterende kode.
    • Når ingen af ​​betingelserne er opfyldt, vil den daværende controller udføre ELSE-blok, hvis den er til stede, og derefter afslutte IF-sætningen.

Bemærk: Når tilstand evalueres til 'NULL', vil SQL behandle 'NULL' som 'FALSE'.

Eksempel 1: Uden ELSE-blok

I dette eksempel skal vi udskrive karakteren baseret på de givne karakterer uden anden betingelse (mærke> = 70 lønklasse A, mærke> = 40 og markér <70 lønklasse B, markér> = 35 og markér <40 lønklasse 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;/

Kode Forklaring:

  • Kodelinje 2: Erklæring af variablen 'mærke' som 'NUMBER' datatype og initialisering med værdien '55'.
  • Kodelinje 4: Udskrivning af udsagnet "Program startet".
  • Kodelinje 5: Kontrol af betingelse1, om 'mærke' er større eller lig med 70.
  • Kodelinje 7: Da betingelse 1 mislykkedes, kontrolleres betingelse2 '70> mark> = 40 '.
  • Kodelinje 8: Betingelsen2 returnerer , og derfor udskrives meddelelsen 'Grad B'.
  • Kodelinje12: Udskrivning af udsagnet "Program afsluttet"
  • I dette tilfælde springes betingelse3 'mærke <35' over, da controlleren fandt en betingelse, der returnerer før betingelse3.

Kodeoutput:

Program started.Grade BProgram completed.

Eksempel 2 : Med ELSE-blok

I dette eksempel skal vi udskrive karakteren baseret på de givne karakterer med ellers betingelse (mark> = 70 Grade A, mark> = 40 og mark <70 Grade B, mark> = 35 og mark <40 Grade C, ellers 'Ingen karakter').

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;/

Kode Forklaring:

  • Kodelinje 2: Erklæring af variablen 'mark' som 'NUMBER' datatype og initialisering med værdien '25'.
  • Kodelinje 4: Udskrivning af udsagnet "Program startet".
  • Kodelinje 5: Kontrol af betingelse 1, om 'mærke' er større eller lig 70.
  • Kodelinje 7: Da betingelse 1 mislykkedes, kontrolleres betingelse2 '70> mark> = 40 '.
  • Kodelinje 8: Da betingelse2 mislykkedes, kontrolleres betingelse3 '40> mark> = 35 '.
  • Kodelinje 11: Da alle betingelser er mislykkede, vil kontrol nu kontrollere for tilstedeværelsen af ​​ELSE-blok, og den vil udskrive meddelelsen 'Ingen karakter' fra ELSE-blokken.
  • Kodelinje 14: Udskrivning af udsagnet "Programmet afsluttet".

Kodeoutput:

Program started.No GradeProgram completed.

NESTED-IF-erklæring

  • NESTED-IF-udsagnet tillader grundlæggende programmerere at placere en eller flere 'IF' -tilstand i en anden 'IF' -tilstand bortset fra normale udsagn.
  • Hver 'IF' -betingelse skal have en separat 'END IF'-sætning, der markerer slutningen af ​​anvendelsesområdet for den pågældende .
  • 'IF' erklæringen betragter den nærmeste 'END IF' erklæring som et slutpunkt for den pågældende tilstand.
  • Den billedlige gengivelse for NESTED-IF er vist nedenfor 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
Syntaks Forklaring:
  • I ovenstående syntaks indeholder den ydre IF endnu en IF-sætning i sin handlingsblok.
  • Betingelsen1 returnerer , så udfører kontrol og kontrollerer betingelsen2.
  • Hvis betingelse2 også returnerer , udføres også.
  • I tilfælde af tilstand2 evalueres til , springer SQL over.

Her skal vi se et eksempel på Nested If -

Eksempel på indlejret- Hvis udsagn: Største af tre tal

I dette eksempel skal vi udskrive det største af tre tal ved hjælp af Nested-If-sætningen. Tallene tildeles i erklæringsdelen, som du kan se i koden nedenfor, dvs. tal = 10,15 og 20, og det maksimale antal hentes ved hjælp af indlejrede-hvis-sætninger.

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;/

Kode Forklaring:

  • Kodelinje 2: Erklærer variablen 'a' som 'NUMBER' datatype og initialiserer den med værdien '10'.
  • Kodelinje 3: Erklærer variablen 'b' som 'NUMBER' datatype og initialiserer den med værdien '15'.
  • Kodelinje 4: Erklærer variablen 'c' som 'NUMBER' datatype og initialiserer den med værdien '20'.
  • Kodelinje 6: Udskrivning af udsagnet "Program startet" (linje 6).
  • Kodelinje 7: Kontrol af betingelse1, om 'a' er større end 'b' (linje 7).
  • Kodelinje 10: Hvis 'a' er større end 'b, vil tilstanden i' nestet-hvis 1 'kontrollere, om' a 'er større end' c '(linje 10).
  • Kodelinje 13: Hvis stadig 'a' er større, udskrives meddelelsen 'A er størst' (linje 11). Ellers hvis betingelse 2 mislykkes, udskrives 'C er størst' (linje 13).
  • Kodelinje 18: Hvis betingelse 1 returnerer falsk, vil tilstanden i 'nestet-hvis 2' kontrollere, om 'b' er større end 'c' (linje 18).
  • Kodelinje 21: Hvis 'b' er større end 'c', vil meddelelsen 'B er størst' blive udskrevet (linje 19), hvis ikke betingelse 2 mislykkes, udskrives 'C er størst' (linje 21).
  • Kodelinje 24: Udskrivning af udsagnet "Program afsluttet" (linje 24).

Output af kode:

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

Resumé

I dette kapitel har vi lært de forskellige beslutningsudsagn og deres syntaks og eksempler. Nedenstående tabel giver en oversigt over forskellige betingede udsagn, som vi har diskuteret.

TYPE

BESKRIVELSE

BRUG

HVIS SÅ

Kontrollerer for en boolsk tilstand, hvis SAND kode i 'DAN'-blokken vil blive udført.

For at springe over, / udfør en bestemt kode baseret på betingelsen.

IF-THEN-ELSE

Kontrollerer for en boolsk tilstand, hvis SAND kode i 'DAN' -blokken udføres, hvis der udføres falsk kode i 'ELSE' -blok.

Mest passende i 'DENNE ELLER-DET-tilstand'.

IF-THEN-ELSIF

Kontrollerer for en boolsk tilstand i rækkefølge. Den første blok i sekvensen, der returnerer SAND tilstand, udføres. Hvis ingen af ​​betingelserne i sekvensen er SAND, udføres kode i 'ELSE' -blok.

Bruges til at vælge mellem mere end to alternativer.

NESTED-IF

Tillader en eller flere IF-THEN- eller IF-THEN-ELSIF-udsagn inden for en anden IF-THEN- eller IF-THEN-ELSIF-sætning (er).

Bruges hovedsageligt i indlejret tilstand.