Oracle PL / SQL HVIS DANNES ANDRE Uttalelse: ELSIF, NESTED-IF

Innholdsfortegnelse:

Anonim

Hva er beslutningsuttalelser?

Beslutningsuttalelser er de som vil bestemme flytkontroll av SQL-setninger basert på forholdene. Det gir programmereren bedre kontroll over å hindre at en bestemt kode kjøres (diagram 1) eller velge ønsket kode basert på tilstanden (diagram 2). Nedenfor er den billedlige framstillingen av "Decision Making Statement".

Diagrammet for beslutningstaking

Typer av uttalelser om beslutningstaking:

Oracle gir følgende typer uttalelsesuttalelser.

  • HVIS DA
  • HVIS-SÅ-ANDRE
  • IF-THEN-ELSIF
  • NESTED-IF
  • SAK
  • SØKT SAK

I denne veiledningen vil du lære-

  • Introduksjon til beslutningsuttalelser
  • IF-THEN-uttalelse
  • IF-THEN-ELSE-uttalelse
  • IF-THEN-ELSIF-uttalelse
  • NESTED-IF uttalelse

IF-THEN-uttalelse

IF-THEN-setningen brukes hovedsakelig til å utføre en bestemt del av koder bare når tilstanden er oppfylt.

Tilstanden skal gi boolsk (sann / usann). Det er en grunnleggende betinget uttalelse som gjør at ORACLE kan utføre / hoppe over et bestemt stykke kode basert på de forhåndsdefinerte forholdene.

Syntaks for HVIS DENNE uttalelser:

IF THEN-executed only if the condition returns TRUEEND if;
  • I syntaksen ovenfor vil nøkkelordet 'IF' bli fulgt av en tilstand som evalueres til 'SANT' / 'FALSE'.
  • Kontrollen vil bare utføre hvis tilstanden returnerer .
  • I tilfelle tilstand evalueres til , vil SQL hoppe over , og den vil begynne å utføre koden ved siden av "END IF" -blokken.

Merk: Når tilstand blir evaluert til 'NULL', vil SQL behandle 'NULL' som 'FALSE'.

Eksempel 1 : I dette eksemplet skal vi skrive ut en melding når tallet er større enn 100. For det vil vi utføre følgende kode

For å skrive ut en melding når et tall har verdi over 100, utfø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 variabelen 'a' som 'NUMBER' datatype og initialiserer den med verdien '10'.
  • Kodelinje 4: Utskrift av utsagnet "Programmet startet".
  • Kodelinje 5: Kontrollere tilstanden, om variabelen 'a' er større enn '100.'
  • Kodelinje 6: Hvis 'a' er større enn '100', vil "a er større enn 100" bli skrevet ut. Hvis 'a' er mindre enn eller lik 100, mislykkes tilstanden, så utskriftsuttalelsen ovenfor ignoreres.
  • Kodelinje 8: Utskrift av utsagnet "Program fullført".

Kodeutgang:

Program started.Program completed. 

Eksempel 2: I dette eksemplet skal vi skrive ut en melding hvis et gitt alfabet er tilstede på engelske vokaler (A, E, I, O, U).

For å skrive ut en melding når det gitte tegnet er vokal, utfø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 variabelen 'a' som 'CHAR' av datatypen størrelse '1' og initialiserer den med verdien 'u'.
  • Kodelinje 4: Kontrollerer tilstanden, om variabelen 'a' er til stede i listen ('A', 'E', 'I', 'O', 'U').
  • Verdien av 'a' har blitt konvertert til store bokstaver før sammenligning for å gjøre sammenligningen uten store og små bokstaver.
  • Kodelinje 5: Hvis 'a' er til stede i listen, vil utsagnet "Tegnet er på engelsk vokaler" bli skrevet ut. Hvis tilstanden mislyktes, vil ikke dette programmet gi noen utdata, for utenfor IF-THEN-blokken har vi ikke utstedt noen utskriftserklæring.

Kodeutgang:

The character is in English Vowels

IF-THEN-ELSE-uttalelse

  • IF-THEN-ELSE-setningen brukes hovedsakelig til å velge mellom to alternativer basert på tilstanden.
  • Nedenfor er syntaksrepresentasjonen av IF-THEN-ELSE-utsagnet.

Syntaks for IF-THEN-ELSE-uttalelser:

IF THEN -executed only if the condition returns TRUE ELSE -execute if the condition failed (returns FALSE) END if;
  • I syntaksen ovenfor vil nøkkelordet 'IF' bli fulgt av en tilstand som evalueres til 'SANT' / 'FALSE'.
  • Kontrollen utfører bare hvis tilstanden returnerer .
  • I tilfelle tilstand evalueres til , vil SQL utføre .
  • I alle fall vil en av de to handlingsblokkene bli utført.

Merk: Når tilstand vurderes til 'NULL', vil SQL behandle 'NULL' som 'FALSE'.

Eksempel 1 : I dette eksemplet skal vi skrive ut en melding om det gitte tallet er oddetall eller jevnt.

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 variabelen 'a' som 'NUMBER' datatype og initialiserer den med verdien '11'.
  • Kodelinje 4: Utskrift av utsagnet "Programmet startet".
  • Kodelinje 5: Kontrollerer tilstanden, om modulen til variabelen 'a' med '2' er 0.
  • Kodelinje 6: Hvis '0', vil "a er partall" skrives ut.
  • Kodelinje 7: Hvis modulverdien ikke er lik '0', returnerer tilstanden , så meldingen "a er oddetall" vil bli skrevet ut.
  • Kodelinje 10: Utskrift av utsagnet "Program fullført"

Kodeutgang:

Program started.a is odd numberProgram completed. 

IF-THEN-ELSIF-uttalelse

  • IF-THEN-ELSIF-setningen brukes hovedsakelig der ett alternativ skal velges fra et sett med alternativer, der hvert alternativ har sine egne betingelser for å oppfylles.
  • De første betingelsene som returnerer vil bli utført, og de resterende betingelsene blir hoppet over.
  • IF-THEN-ELSIF-setningen kan inneholde 'ELSE' -blokk i den. Denne 'ELSE' -blokken vil bli utført hvis ingen av vilkårene er oppfylt.

Merk : ELSE-blokkering er valgfri i denne betingede erklæringen. Hvis det ikke er noen ELSE-blokk, og ingen av betingelsene er oppfylt, vil kontrolleren hoppe over hele handlingsblokken og begynne å utføre den gjenværende delen av koden.

Syntaks for IF-THEN-ELSIF-utsagn:

IF THEN-executed only if the condition returns TRUE ELSIF  ELSIF  ELSE -optionalEND if;
  • I syntaksen ovenfor vil kontrollen bare utføre hvis betingelsen 1 returnerer .
  • Hvis betingelse1 ikke er oppfylt, vil kontrolleren sjekke for tilstand2.
  • Kontrolløren vil gå ut av IF-setningen i de følgende to tilfellene.
    • Når kontrolleren fant en tilstand som returnerer . I dette tilfellet vil den tilsvarende action_blocken bli utført, og kontrolleren vil avslutte denne IF-setningsblokken og begynne å utføre den gjenværende koden.
    • Når ingen av betingelsene er oppfylt, vil den daværende kontrolleren utføre ELSE-blokkering hvis den er tilstede, og deretter gå ut av IF-setningen.

Merk: Når tilstand vurderes til 'NULL', vil SQL behandle 'NULL' som 'FALSE'.

Eksempel 1: Uten ELSE-blokk

I dette eksemplet skal vi skrive ut karakteren basert på gitte karakterer uten annet forhold (merke> = 70 karakter A, merke> = 40 og merke <70 karakter B, merke> = 35 og merke <40 karakter 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ærer variabelen 'merke' som 'NUMMER' datatype og initialiserer den med verdien '55'.
  • Kodelinje 4: Utskrift av utsagnet "Programmet startet".
  • Kodelinje 5: Kontrollere tilstanden1, om 'merke' er større eller lik 70.
  • Kodelinje 7: Siden tilstand1 mislyktes, blir betingelse2 '70> merke> = 40 'sjekket.
  • Kodelinje 8: Condtition2 returnerer , derav meldingen "Grad B" vil bli skrevet ut.
  • Kodelinje12: Utskrift av utsagnet "Program fullført".
  • I dette tilfellet blir betingelsen 3 'mark <35' hoppet over, da kontrolleren fant en tilstand som returnerer før tilstand 3.

Kodeutgang:

Program started.Grade BProgram completed.

Eksempel 2 : Med ELSE-blokk

I dette eksemplet skal vi skrive ut karakteren basert på gitte karakterer med annet forhold (merke> = 70 karakter A, merke> = 40 og merke <70 karakter B, merke> = 35 og merke <40 karakter 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ærer variabelen 'merke' som 'NUMMER' datatype og initialiserer den med verdien '25'.
  • Kodelinje 4: Utskrift av utsagnet "Programmet startet".
  • Kodelinje 5: Kontroll av tilstand 1, om 'merke' er større eller lik 70.
  • Kodelinje 7: Siden tilstand1 mislyktes, blir betingelse2 '70> merke> = 40 'sjekket.
  • Kodelinje 8: Siden tilstand2 mislyktes, blir betingelse3 '40> merke> = 35 'sjekket.
  • Kodelinje 11: Siden alle forholdene mislykkes, vil kontrollen nå sjekke for tilstedeværelsen av ELSE-blokken, og den vil skrive ut meldingen 'Ingen karakter' fra ELSE-blokken.
  • Kodelinje 14: Utskrift av utsagnet "Program fullført".

Kodeutgang:

Program started.No GradeProgram completed.

NESTED-IF uttalelse

  • NESTED-IF-setningen tillater i utgangspunktet programmerere å plassere en eller flere "IF" -tilstander i en annen "IF" -tilstand enn normale utsagn.
  • Hver "IF" -betingelse skal ha en egen "END IF" -uttalelse som markerer slutten på omfanget av den aktuelle .
  • 'IF' -uttalelsen vil betrakte nærmeste 'END IF' -uttalelse som et sluttpunkt for den aktuelle tilstanden.
  • Den billedlige representasjonen for NESTED-IF er vist under 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 ovennevnte syntaks inneholder den ytre IF en ytterligere IF-setning i handlingsblokken.
  • Betingelsen1 returnerer , så utfører kontrollen og sjekker tilstanden2.
  • Hvis condition2 også returnerer , vil også bli utført.
  • I tilfelle tilstand2 evalueres til , vil SQL hoppe over .

Her skal vi se et eksempel på Nested If -

Eksempel på nestet - Hvis uttalelse: Største av tre tall

I dette eksemplet skal vi skrive ut det største av tre tall ved å bruke Nested-If-setningen. Tallene blir tildelt i erklæringsdelen, som du kan se i koden nedenfor, dvs. tall = 10,15 og 20, og maksimalt antall blir hentet ved hjelp av nestede hvis-setninger.

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 variabelen 'a' som 'NUMBER' datatype og initialiserer den med verdien '10'.
  • Kodelinje 3: Erklærer variabelen 'b' som 'NUMBER' datatype og initialiserer den med verdien '15'.
  • Kodelinje 4: Erklærer variabelen 'c' som 'NUMBER' datatype og initialiserer den med verdien '20'.
  • Kodelinje 6: Utskrift av setningen "Programmet startet" (linje 6).
  • Kodelinje 7: Kontrollerer tilstanden 1, om 'a' er større enn 'b' (linje 7).
  • Kodelinje 10: Hvis 'a' er større enn 'b, vil tilstanden i' nestet-hvis 1 'sjekke om' a 'er større enn' c '(linje 10).
  • Kodelinje 13: Hvis fortsatt 'a' er større, vil meldingen 'A er størst' skrives ut (linje 11). Ellers hvis betingelse 2 mislykkes, vil 'C er størst' skrives ut (linje 13).
  • Kodelinje 18: I tilfelle tilstand1 returnerer falsk, vil tilstanden i 'nestet-hvis 2' sjekke om 'b' er større enn 'c' (linje 18).
  • Kodelinje 21: Hvis 'b' er større enn 'c', vil meldingen 'B er størst' bli skrevet ut (linje 19), hvis ikke tilstand2 mislykkes, vil 'C er størst' skrives ut (linje 21).
  • Kodelinje 24: Utskrift av utsagnet "Program fullført" (linje 24).

Utgang av kode:

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

Sammendrag

I dette kapittelet har vi lært de forskjellige beslutningsuttalelsene og deres syntaks og eksempler. Tabellen nedenfor gir et sammendrag av forskjellige betingede uttalelser som vi har diskutert.

TYPE

BESKRIVELSE

BRUK

HVIS DA

Sjekker for en boolsk tilstand hvis SANN kode i 'DAN'-blokken blir utført.

For å hoppe over, / utføre en bestemt kode basert på tilstanden.

HVIS-SÅ-ANDRE

Sjekker for en boolsk tilstand, hvis SANN kode i 'DAN'-blokken vil bli utført, hvis falsk kode i' ELSE '-blokk kjøres.

Mest hensiktsmessig i 'DETTE ELLER DET' -tilstanden.

IF-THEN-ELSIF

Sjekker for en boolsk tilstand i sekvensiell rekkefølge. Den første blokken i sekvensen som returnerer SANT tilstand vil bli utført. Hvis ingen av betingelsene i sekvensen er SANN, blir kode i 'ELSE' -blokk utført.

Brukes for det meste å velge mellom mer enn to alternativer.

NESTED-IF

Tillater en eller flere IF-THEN eller IF-THEN-ELSIF uttalelser i en annen IF-THEN eller IF-THEN-ELSIF uttalelse (r).

Brukes hovedsakelig i nestet tilstand.