Oracle PL / SQL JOS SEN MUUT Lausunto: ELSIF, NESTED-IF

Sisällysluettelo:

Anonim

Mitä ovat päätöksentekolausunnot?

Päätöksentekolausekkeet ovat niitä, jotka päättävät SQL-käskyjen vuonohjauksen olosuhteiden perusteella. Se antaa ohjelmoijalle paremman hallinnan estää tietyn koodin suorittaminen (kaavio 1) tai valita haluttu koodi ehdon perusteella (kaavio 2). Alla on kuvallinen kuvaus "päätöksentekolausekkeesta".

Päätöksentekokaavio

Tyypit päätöksentekolausekkeista:

Oracle tarjoaa seuraavan tyyppisiä päätöksentekolausekkeita.

  • JOS SITTEN
  • JOS SITÄ MUUTA
  • JOS SITÄ ELSIF
  • PESETTY-JOS
  • TAPAUS
  • HAKU TAPAUS

Tässä opetusohjelmassa opit-

  • Johdanto päätöksentekolausuntoihin
  • JOS Sitten lausunto
  • IF-THEN-ELSE lausunto
  • IF-THEN-ELSIF-lausunto
  • NESTED-IF-lausunto

JOS Sitten lausunto

IF-THEN-käskyä käytetään pääasiassa tietyn koodiosan suorittamiseen vain, kun ehto täyttyy.

Ehdon pitäisi antaa looginen arvo (tosi / epätosi). Se on ehdollinen peruslauseke, jonka avulla ORACLE voi suorittaa / ohittaa tietyn koodinpalan ennalta määriteltyjen ehtojen perusteella.

Syntaksi IF THEN -lausekkeille:

IF THEN-executed only if the condition returns TRUEEND if;
  • Edellä olevassa syntaksissa avainsanaa '' IF '' seuraa ehto, jonka arvo on TOSI / EPÄTOSI.
  • Ohjaus suorittaa vain, jos ehto palauttaa arvon .
  • Jos ehto arvioi arvoksi , SQL ohittaa ja alkaa suorittaa koodia LOPPU-JOS-lohkon vieressä.

Huomautus: Aina kun ehdoksi arvioidaan NULL, SQL käsittelee NULL-arvoa FALSE-arvona.

Esimerkki 1 : Tässä esimerkissä aiomme tulostaa viestin, kun numero on suurempi kuin 100. Tätä varten suoritamme seuraavan koodin

Jos haluat tulostaa viestin, kun luvun arvo on yli 100, suoritamme seuraavan koodin.

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

Koodin selitys:

  • Koodirivi 2: Muuttujan a ilmoittaminen tietotyypiksi NUMBER ja alustaminen arvolla 10.
  • Koodirivi 4: "Käynnistetty ohjelma" -lausekkeen tulostaminen.
  • Koodirivi 5: Tarkistetaan ehto, onko muuttuja a suurempi kuin 100.
  • Koodirivi 6: Jos 'a' on suurempi kuin '100', niin "a on suurempi kuin 100" tulostetaan. Jos 'a' on pienempi tai yhtä suuri kuin 100, ehto epäonnistuu, joten yllä oleva tulostuslauseke jätettiin huomioimatta.
  • Koodirivi 8: Lausunnon "Ohjelma valmis" tulostaminen.

Koodilähtö:

Program started.Program completed. 

Esimerkki 2: Tässä esimerkissä aiomme tulostaa viestin, jos annettu aakkoset ovat englanninkielisillä vokaaleilla (A, E, I, O, U).

Jos haluat tulostaa viestin, kun annettu merkki on Vokaali, suoritamme seuraavan koodin.

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

Koodin selitys:

  • Koodirivi 2: Ilmoitetaan muuttuja 'a' CHAR'iksi koon '1' tietotyypille ja alustetaan se arvolla 'u'.
  • Koodirivi 4: Tarkistetaan ehto, onko muuttuja 'a' luettelossa ('A', 'E', 'I', 'O', 'U').
  • A-arvon arvo on muunnettu isoksi ennen vertailua, jotta vertailu olisi kirjainkoon riippumaton.
  • Koodirivi 5: Jos luettelossa on 'a', tulostetaan lause "Merkki on englanninkielisillä vokaaleilla". Jos ehto epäonnistuu, tämä ohjelma ei tuota mitään tulostusta, koska IF-THEN-lohkon ulkopuolella emme ole antaneet mitään tulostuslauseketta.

Koodilähtö:

The character is in English Vowels

IF-THEN-ELSE lausunto

  • IF-THEN-ELSE-käskyä käytetään pääasiassa kahden vaihtoehdon valitsemiseen ehdon perusteella.
  • Alla on IF-THEN-ELSE-lauseen syntaksiesitys.

Syntaksi IF-THEN-ELSE-lauseille:

IF THEN -executed only if the condition returns TRUE ELSE -execute if the condition failed (returns FALSE) END if;
  • Edellä olevassa syntaksissa avainsanaa '' IF '' seuraa ehto, jonka arvo on TOSI / EPÄTOSI.
  • Ohjaus suorittaa vain, jos ehto palauttaa arvon .
  • Jos ehdon arvo on , SQL suorittaa .
  • Joka tapauksessa yksi kahdesta toimintalohkosta suoritetaan.

Huomaa: Aina kun ehdoksi arvioidaan NULL, SQL käsittelee NULL-arvoa FALSE-arvona.

Esimerkki 1 : Tässä esimerkissä aiomme tulostaa viestin, onko annettu numero pariton vai parillinen.

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

Koodin selitys:

  • Koodirivi 2: Ilmoitetaan muuttuja a numeroksi NUMBER ja alustetaan se arvolla 11.
  • Koodirivi 4: "Käynnistetty ohjelma" -lausekkeen tulostaminen.
  • Koodirivi 5: Tarkistetaan ehto, onko muuttujan 'a' moduuli '2: lla' 0.
  • Koodirivi 6: Jos '0', niin "a on parillinen luku" tulostetaan.
  • Koodirivi 7: Jos moduulin arvo ei ole yhtä suuri kuin '0', ehto palauttaa arvon , joten viesti "a on pariton numero" tulostetaan.
  • Koodirivi10: Lausunnon "Ohjelma valmis" tulostaminen

Koodilähtö:

Program started.a is odd numberProgram completed. 

IF-THEN-ELSIF-lausunto

  • IF-THEN-ELSIF-lausuntoa käytetään pääasiassa silloin, kun yksi vaihtoehto tulisi valita joukosta vaihtoehtoja, jolloin jokaisella vaihtoehdolla on omat ehdot, jotka täytetään.
  • Ensimmäiset ehdot, jotka palauttavat arvon , suoritetaan ja muut ehdot ohitetaan.
  • IF-THEN-ELSIF-käsky voi sisältää 'ELSE' -lohkon. Tämä 'ELSE' -lohko suoritetaan, jos mikään ehdoista ei täyty.

Huomaa : ELSE-lause on valinnainen tässä ehdollisessa lausekkeessa. Jos ELSE-lohkoa ei ole eikä mikään ehto täyty, ohjain ohittaa kaikki toimintalohkot ja aloittaa koodin jäljellä olevan osan suorittamisen.

Syntaksi IF-THEN-ELSIF-lauseille:

IF THEN-executed only if the condition returns TRUE ELSIF  ELSIF  ELSE -optionalEND if;
  • Edellä olevassa syntaksissa ohjausobjekti suorittaa vain, jos ehto1 palauttaa arvon .
  • Jos ehto1 ei täyty, ohjain tarkistaa ehdon 2.
  • Ohjain poistuu IF-lauseesta kahdessa seuraavassa tapauksessa.
    • Kun ohjain löysi minkä tahansa ehdon, joka palauttaa arvon . Tässä tapauksessa vastaava toimintalohko suoritetaan ja ohjain poistuu tästä IF-lauseen lohkosta ja aloittaa jäljellä olevan koodin suorittamisen.
    • Kun mikään ehdoista ei täyty, ohjain suorittaa ELSE-lohkon, jos sellainen on, poistuu sitten IF-käskystä.

Huomaa: Aina kun ehdoksi arvioidaan NULL, SQL käsittelee NULL-arvoa FALSE-arvona.

Esimerkki 1: Ilman ELSE-lohkoa

Tässä esimerkissä aiomme tulostaa arvosanan annettujen pisteiden perusteella ilman muuta ehtoa (merkki> = 70 luokka A, merkki> = 40 ja merkki <70 luokka B, merkki> = 35 ja merkki <40 luokka 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;/

Koodin selitys:

  • Koodirivi 2: Ilmoitetaan muuttuja 'mark' tietotyypiksi NUMBER ja alustetaan se arvolla '55'.
  • Koodirivi 4: "Käynnistetty ohjelma" -lausekkeen tulostaminen.
  • Koodirivi 5: Tarkistetaan ehto1, onko 'merkki' suurempi tai yhtä suuri 70.
  • Koodirivi 7: Koska ehto1 epäonnistui, ehto2 '70> merkki> = 40 'tarkistetaan.
  • Koodirivi 8: Ehto2 palauttaa arvon , joten viesti 'Grade B' tulostetaan.
  • Koodirivi12: Lausunnon "Ohjelma valmis" tulostaminen.
  • Tällöin ehto3 'merkki <35' ohitetaan, koska ohjain löysi yhden ehdon, joka palauttaa arvon ennen ehtoa3.

Koodilähtö:

Program started.Grade BProgram completed.

Esimerkki 2 : ELSE-lohkolla

Tässä esimerkissä aiomme tulostaa arvosanan annettujen pisteiden perusteella muulla ehdolla (merkki> = 70 luokka A, merkki> = 40 ja merkki <70 luokka B, merkki> = 35 ja merkki <40 luokka C, muut Ei arvosanaa).

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

Koodin selitys:

  • Koodirivi 2: Ilmoitetaan muuttuja "mark" tietotyypiksi "NUMBER" ja alustetaan se arvolla "25".
  • Koodirivi 4: "Käynnistetty ohjelma" -lausekkeen tulostaminen.
  • Koodirivi 5: Tarkistetaan ehto 1, onko 'merkki' suurempi tai yhtä suuri 70.
  • Koodirivi 7: Koska ehto1 epäonnistui, ehto2 '70> merkki> = 40 'tarkistetaan.
  • Koodirivi 8: Koska ehto2 epäonnistui, ehto3 '40> merkki> = 35 'tarkistetaan.
  • Koodirivi 11: Koska kaikki ehdot ovat epäonnistuneet, ohjaus tarkistaa nyt ELSE-lohkon olemassaolon ja tulostaa viestin No Grade ELSE-lohkosta.
  • Koodirivi14: Lausunnon "Ohjelma valmis" tulostaminen.

Koodilähtö:

Program started.No GradeProgram completed.

NESTED-IF-lausunto

  • NESTED-IF-käskyn avulla ohjelmoijat voivat periaatteessa sijoittaa yhden tai useamman 'IF' -ehdon toisen 'IF' -ehdon sisään normaalin lauseen ulkopuolelle.
  • Jokaisella IF-ehdolla tulisi olla erillinen END IF -käsky, joka merkitsee kyseisen -alueen loppuosan.
  • IF-lauseke pitää lähintä END IF -lausetta päätepisteenä kyseiselle ehdolle.
  • NESTED-IF: n kuvallinen esitys on esitetty alla olevassa kaaviossa.
IF THEN -executed only if the condition returns TRUE  IF  THEN  END IF; -END IF corresponds to condition2END IF; -END IF corresponds to condition1
Syntaksi Selitys:
  • Edellä olevassa syntaksissa ulompi IF sisältää vielä yhden IF-lauseen toimintalohkossaan.
  • Ehto1 palauttaa arvon , sitten ohjaus suorittaa ja tarkistaa ehdon2.
  • Jos ehto2 palauttaa myös arvon , suoritetaan myös .
  • Jos ehto2 arvioi arvon , SQL ohittaa .

Täällä näemme esimerkin Nested If -

Esimerkki sisäkkäisestä If-lauseesta: Suurin kolmesta luvusta

Tässä esimerkissä aiomme tulostaa suurimman kolmesta luvusta käyttämällä Nested-If-käskyä. Numerot määritetään ilmoitusosaan, kuten alla olevasta koodista näet, eli luku = 10,15 ja 20 ja enimmäismäärä haetaan käyttämällä sisäkkäisiä if-käskyjä.

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

Koodin selitys:

  • Koodirivi 2: Muuttujan a ilmoittaminen tietotyypiksi NUMBER ja alustaminen arvolla 10.
  • Koodirivi 3: Ilmoitetaan muuttuja b tietotyypiksi NUMBER ja alustetaan se arvolla 15.
  • Koodirivi 4: Ilmoitetaan muuttuja c tietotyypiksi NUMBER ja alustetaan se arvolla 20.
  • Koodirivi 6: Lausekkeen "ohjelma aloitettu" (rivi 6) tulostaminen.
  • Koodirivi 7: Tarkistetaan ehto1, onko 'a' suurempi kuin 'b' (rivi 7).
  • Koodirivi 10: Jos 'a' on suurempi kuin 'b, ehto kohdassa' sisäkkäin-jos 1 'tarkistaa, onko' a 'suurempi kuin' c '(rivi 10).
  • Koodirivi 13: Jos edelleen "a" on suurempi, niin viesti "A on suurin" tulostetaan (rivi 11). Muutoin, jos ehto 2 epäonnistuu, tulostetaan 'C on suurin' (rivi 13).
  • Koodirivi 18: Jos ehto1 palauttaa epätosi, ehto kohdassa 'sisäkkäin - jos 2' tarkistaa, onko 'b' suurempi kuin 'c' (rivi 18).
  • Koodirivi 21: Jos 'b' on suurempi kuin 'c', niin viesti 'B on suurin' tulostetaan (rivi 19), muuten jos ehto 2 epäonnistuu, tulostetaan 'C on suurin' (rivi 21).
  • Koodirivi 24: Lausunnon "Ohjelma valmis" tulostaminen (rivi 24).

Koodin tuotos:

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

Yhteenveto

Tässä luvussa olemme oppineet erilaiset päätöksentekolausekkeet, niiden syntaksin ja esimerkit. Alla olevassa taulukossa on yhteenveto erilaisista ehdollisista lausunnoista, joista olemme keskustelleet.

TYYPPI

KUVAUS

KÄYTTÖ

JOS SITTEN

Tarkastaa loogisen tilan, jos TOSI-koodi TÄNNÄ-lohkossa suoritetaan.

Voit ohittaa / suorittaa tietyn koodin ehdon perusteella.

JOS SITÄ MUUTA

Tarkistaa loogisen ehdon, suoritetaanko TOSI-koodi TÄNNÄ-lohkossa, jos väärä koodi suoritetaan ELSE-lohkossa.

Sopivin 'THIS-OR-THAT' -tilassa.

JOS SITÄ ELSIF

Tarkistaa loogisen tilan peräkkäisessä järjestyksessä. Sekvenssin ensimmäinen lohko, joka palauttaa TOSI-ehdon, suoritetaan. Jos mikään sekvenssin ehdoista ei ole TOSI, koodi ELSE-lohkossa suoritetaan.

Käytetään useimpien yli kahden vaihtoehdon välillä.

PESETTY-JOS

Sallii yhden tai useamman IF-THEN- tai IF-THEN-ELSIF-lauseen toisen IF-THEN- tai IF-THEN-ELSIF-lauseen sisällä.

Käytetään pääasiassa sisäkkäisissä olosuhteissa.