Oracle PL / SQL KUI SIIS TEISE Avaldus: ELSIF, NESTED-IF

Lang L: none (table-of-contents):

Anonim

Mis on otsuste tegemise avaldused?

Otsuste tegemise avaldused on need, kes otsustavad SQL-i lausete voo juhtimise tingimuste alusel. See annab programmeerijale parema kontrolli konkreetse koodi käivitamise takistamise üle (skeem 1) või tingimuse põhjal soovitud koodi valimise (skeem 2). Allpool on kujutis "Otsuste tegemise avaldusest".

Otsuste langetamise skeem

Otsuste tegemise avalduste tüübid:

Oracle pakub järgmist tüüpi otsuste tegemise avaldusi.

  • KUI SIIS
  • KUI-SIIS-TEISE
  • KUI-SIIS-ELSIF
  • PESITATUD-KUI
  • JUHTUM
  • OTSITUD JUHTUM

Selles õpetuses saate teada

  • Sissejuhatus otsuste tegemise avaldustesse
  • KUI-SIIS avaldus
  • IF-THEN-MUU avaldus
  • IF-THEN-ELSIF avaldus
  • NESTED-IF avaldus

KUI-SIIS avaldus

IF-THEN lauset kasutatakse peamiselt konkreetse koodijao käivitamiseks ainult siis, kui tingimus on täidetud.

Tingimus peaks andma tõeväärtuse (tõene / väär). See on tingimuslik põhilause, mis võimaldab ORACLE-il eelnevalt kindlaksmääratud tingimuste põhjal käivitada / vahele jätta teatud koodijupi.

KUI SIIS avalduste süntaks:

IF THEN-executed only if the condition returns TRUEEND if;
  • Ülaltoodud süntaksis järgneb märksõnale „IF” tingimus, mille väärtuseks on „TRUE” / „FALSE”.
  • Juhtelement käivitab ainult siis, kui tingimus tagastab väärtuse .
  • Juhul, kui seisundi väärtuseks on , jätab SQL vahele ja ta hakkab koodi täitma ploki 'END IF' kõrval.

Märkus. Kui tingimuseks on määratud „NULL”, käsitleb SQL „NULL” kui „FALSE”.

Näide 1 : Selles näites printime teate, kui arv on suurem kui 100. Selleks käivitame järgmise koodi

Sõnumi printimiseks, kui numbri väärtus on suurem kui 100, käivitame järgmise koodi.

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

Koodi selgitus:

  • Koodirida 2: Muutuja a kuulutamine andmetüübiks NUMBER ja initsialiseerimine väärtusega 10.
  • Koodirida 4: Väljavõtte "Programmi käivitamine" printimine.
  • Koodirida 5: tingimuse kontrollimine, kas muutuja „a” on suurem kui „100”.
  • Koodirida 6: kui 'a' on suurem kui '100', siis trükitakse 'a on suurem kui 100'. Kui 'a' on väiksem või võrdne 100-ga, siis tingimus ebaõnnestub, nii et ülaltoodud printimisavaldus eirati.
  • Koodirida 8: väljavõtte "Programm valmis" printimine.

Koodi väljund:

Program started.Program completed. 

Näide 2: Selles näites printime sõnumi, kui antud tähestik on ingliskeelsete täishäälikutega (A, E, I, O, U).

Sõnumi printimiseks, kui antud tähemärk on Vokaal, täidame järgmise koodi.

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

Koodi selgitus:

  • Koodirida 2: muutuja „a” deklareerimine suurusega „1” „CHAR” ja initsialiseerimine väärtusega „u”.
  • Koodirida 4: tingimuse kontrollimine, kas loendis on muutuja 'a' ('A', 'E', 'I', 'O', 'U').
  • Enne võrdlemist on „a” väärtus teisendatud suurtäheks, et võrrelda suurt ja väiketähti.
  • Koodirida 5: Kui loendis on „a”, siis trükitakse lause „Märk on inglise häälikutes”. Kui tingimus ebaõnnestub, ei anna see programm väljundit, kuna väljaspool plokki IF-THEN pole me ühtegi printimisavaldust välja andnud.

Koodi väljund:

The character is in English Vowels

IF-THEN-MUU avaldus

  • Lauset IF-THEN-ELSE kasutatakse peamiselt tingimusest lähtuvalt kahe alternatiivi valimiseks.
  • Allpool on IF-THEN-ELSE lause süntaksesitus.

IF-THEN-ELSE avalduste süntaks:

IF THEN -executed only if the condition returns TRUE ELSE -execute if the condition failed (returns FALSE) END if;
  • Ülaltoodud süntaksis järgneb märksõnale „IF” tingimus, mille väärtuseks on „TRUE” / „FALSE”.
  • Juhtelement käivitab ainult siis, kui tingimus tagastab väärtuse .
  • Kui tingimuse väärtuseks on , siis käivitab SQL .
  • Igal juhul täidetakse üks kahest toimimisplokist.

Märkus. Alati, kui tingimuse väärtuseks on „NULL”, käsitleb SQL „NULL” kui „FALSE”.

Näide 1 : Selles näites printime teate, kas antud arv on paaritu või paaris.

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

Koodi selgitus:

  • Koodirida 2: muutuja a deklareerimine andmetüübiks NUMBER ja initsialiseerimine väärtusega 11.
  • Koodirida 4: Väljavõtte "Programmi käivitamine" printimine.
  • Koodirida 5: tingimuse kontrollimine, kas muutuja 'a' moodul '2' järgi on 0.
  • Koodirida 6: kui "0", siis trükitakse "a on paarisarv".
  • Koodirida 7: kui mooduli väärtus ei ole võrdne '0' -ga, tagastab tingimus , seega trükitakse teade "a on paaritu number".
  • Koodirida10: väljavõtte "Programm valmis" printimine

Koodi väljund:

Program started.a is odd numberProgram completed. 

IF-THEN-ELSIF avaldus

  • Lauset IF-THEN-ELSIF kasutatakse peamiselt seal, kus alternatiivide hulgast tuleks valida üks alternatiiv, kusjuures igal alternatiivil on oma tingimused, mille täitmiseks on vaja.
  • Esimesed tingimused, mis tagastavad , täidetakse ja ülejäänud tingimused jäetakse vahele.
  • IF-THEN-ELSIF-lause võib selles sisaldada plokki ELSE. See 'ELSE' plokk käivitatakse, kui ükski tingimustest pole täidetud.

Märkus : ELSE-plokk on selles tingimuslauses valikuline. Kui ELSE-plokki pole ja ükski tingimus pole täidetud, jätab kontroller kogu toimimisploki vahele ja hakkab koodi ülejäänud osa täitma.

IF-THEN-ELSIF-i lausete süntaks:

IF THEN-executed only if the condition returns TRUE ELSIF  ELSIF  ELSE -optionalEND if;
  • Ülaltoodud süntaksis käivitab juhtelement ainult siis, kui tingimus1 tagastab väärtuse .
  • Kui tingimus1 ei ole täidetud, kontrollib kontroller tingimust2.
  • Kontroller väljub IF-avaldusest järgmisel kahel juhul.
    • Kui kontroller leidis mis tahes tingimuse, mis tagastab väärtuse . Sel juhul käivitatakse vastav action_block ja kontroller väljub sellest IF-lause plokist ja hakkab ülejäänud koodi täitma.
    • Kui ükski tingimustest pole täidetud, käivitab kontroller ELSE-ploki, kui see on olemas, väljub IF-lausest.

Märkus. Alati, kui tingimuse väärtuseks on „NULL”, käsitleb SQL „NULL” kui „FALSE”.

Näide 1: Ilma ELSE-plokita

Selles näites trükime hinde antud märkide põhjal ilma muude tingimusteta (märk> = 70 Hinne A, märk> = 40 ja märk <70 Hinne B, märk> = 35 ja märk <40 Hinne 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;/

Koodi selgitus:

  • 2. koodirida: muutuja „mark” deklareerimine andmetüübiks „NUMBER” ja initsialiseerimine väärtusega „55”.
  • Koodirida 4: Väljavõtte "Programmi käivitamine" printimine.
  • Koodirida 5: tingimuse1 kontrollimine, kas märk on suurem või võrdne 70.
  • Koodirida 7: Kuna tingimus1 ebaõnnestus, siis kontrollitakse tingimust2 '70> märk> = 40 '.
  • Koodirida 8: Condtition2 tagastab , seega trükitakse teade 'Hinne B'.
  • Koodirida12: väljavõtte "Programm valmis" printimine.
  • Sel juhul jäetakse tingimus3 'märk <35' vahele, kuna kontroller leidis ühe tingimuse, mis tagastab tingimuse3 ees .

Koodi väljund:

Program started.Grade BProgram completed.

Näide 2 : ELSE-plokiga

Selles näites trükime hinde antud märkide alusel muu tingimusega (märk> = 70 Hinne A, märk> = 40 ja märk <70 Hinne B, märk> = 35 ja märk <40 Hinne C, muu Hinne puudub).

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

Koodi selgitus:

  • Koodirida 2: muutuja „mark” deklareerimine andmetüübiks „NUMBER” ja initsialiseerimine väärtusega „25”.
  • Koodirida 4: Väljavõtte "Programmi käivitamine" printimine.
  • Koodirida 5: tingimuse 1 kontrollimine, kas märk on suurem või võrdne 70.
  • Koodirida 7: Kuna tingimus1 ebaõnnestus, siis kontrollitakse tingimust2 '70> märk> = 40 '.
  • Koodirida 8: Kuna tingimus 2 ebaõnnestus, kontrollitakse tingimust3 '40> märk> = 35'.
  • Koodirida 11: Kuna kõik tingimused on ebaõnnestunud, kontrollib juhtimisseade nüüd ELSE-ploki olemasolu ja prindib ELSE-plokist teate „No Grade”.
  • Koodirida14: väljavõtte "Programm valmis" printimine.

Koodi väljund:

Program started.No GradeProgram completed.

NESTED-IF avaldus

  • NESTED-IF-lause lubab programmeerijatel põhimõtteliselt paigutada ühe või mitu tingimust „IF” teise IF-tingimuse sisse, välja arvatud tavalised avaldused.
  • Igal tingimusel „IF” peaks olema eraldi käsk „END IF”, mis tähistab konkreetse ulatuse lõppu.
  • IF-avalduses käsitletakse selle konkreetse tingimuse lõpp-punktina lähimat lauset END IF.
  • NESTED-IF pildiline esitus on toodud allpool skeemi.
IF THEN -executed only if the condition returns TRUE  IF  THEN  END IF; -END IF corresponds to condition2END IF; -END IF corresponds to condition1
Süntaksi selgitus:
  • Ülaltoodud süntaksis sisaldab väline IF oma toimimisplokis veel ühte IF-lauset.
  • Tingimus1 tagastab väärtuse , seejärel käivitab juhtelement ja kontrollib tingimust2.
  • Kui tingimus2 tagastab ka väärtuse , siis käivitatakse ka .
  • Juhul, kui tingimus2 hindab väärtuseks , jätab SQL vahele.

Siin näeme Nested If'i näidet -

Näide Nested- If lause kohta: Suurim kolmest arvust

Selles näites printime kolmest numbrist suurima, kasutades Nested-If lauset. Numbrid määratakse deklareerimisosas, nagu näete allpool olevast koodist, st Number = 10,15 ja 20 ning maksimaalne arv tõmmatakse pesastatud if-lausete abil.

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

Koodi selgitus:

  • Koodirida 2: Muutuja a kuulutamine andmetüübiks NUMBER ja initsialiseerimine väärtusega 10.
  • Koodirida 3: Muutuja „b” deklareerimine andmetüübiks „NUMBER” ja initsialiseerimine väärtusega „15”.
  • Koodirida 4: muutuja „c” deklareerimine andmetüübiks „NUMBER” ja initsialiseerimine väärtusega „20”.
  • Koodirida 6: Väljavõtte "Programmi käivitamine" printimine (rida 6).
  • Koodirida 7: tingimuse1 kontrollimine, kas 'a' on suurem kui 'b' (rida 7).
  • Koodirida 10: Kui 'a' on suurem kui 'b, siis tingimus jaotises' pesastatud-kui 1 'kontrollib, kas' a 'on suurem kui' c '(rida 10).
  • Koodirida 13: Kui ikka „a” on suurem, siis trükitakse teade „A on suurim” (rida 11). Muul juhul, kui tingimus 2 ebaõnnestub, trükitakse 'C on suurim' (rida 13).
  • Koodirida 18: Juhul, kui tingimus1 tagastab vale, kontrollib tingimus jaotises „sisestatud - kui 2”, kas „b” on suurem kui „c” (rida 18).
  • Koodirida 21: Kui 'b' on suurem kui 'c', siis trükitakse teade 'B on suurim' (rida 19), muul juhul, kui tingimus2 ebaõnnestub, siis trükitakse 'C on suurim' (rida 21).
  • Koodirida 24: Väljavõtte "Programm valmis" printimine (rida 24).

Koodi väljund:

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

Kokkuvõte

Selles peatükis oleme õppinud erinevaid otsustamisväiteid, nende süntaksit ja näiteid. Allpool olev tabel annab kokkuvõtte erinevatest tingimuslausetest, mida oleme arutanud.

TÜÜP

KIRJELDUS

KASUTAMINE

KUI SIIS

Kontrollib tõeväärtuse tingimust, kui TRUE-kood plokis 'THEN' käivitatakse.

Vahelejätmiseks / käivitage konkreetne kood vastavalt tingimusele.

KUI-SIIS-TEISE

Kontrollib tõeväärtuse tingimust, kui TÕENE kood käivitatakse plokis 'THEN', kui vale kood 'ELSE' plokis käivitatakse.

Kõige sobivam seisundis „SELLE VÕI SELLE“.

KUI-SIIS-ELSIF

Kontrollib Boole'i ​​seisundit järjestuses. Käivitatakse järjestuse esimene lause, mis tagastab tingimuse TRUE. Kui ükski jada tingimustest ei ole TÕENE, siis käivitatakse ploki 'ELSE' kood.

Kasutatakse enam kui kahe alternatiivi vahel valimiseks.

PESITATUD-KUI

Lubab ühe või mitu lauset IF-THEN või IF-THEN-ELSIF teise IF-THEN või IF-THEN-ELSIF-i lause (de) sees.

Kasutatakse peamiselt pesastatud seisundis.