Johdanto tapausselostukseen PL / SQL: ssä

CAS / lause PL / SQL: ssä on samanlainen kuin IF-ELSEIF-ehto, jossa lohkossa luetellaan erilaisia ​​ehtoja ja vain ne lauseet suoritetaan, joille ehto täyttää. CASE-lause vastaa lausekkeen arvoa Boolen lausekkeen sijasta. Lauseke voi olla mikä tahansa tietotyyppi ja samaa tietotyyppiä on käytettävä lauseissa. Jokaisella lauseella on ennalta määritetty arvo ja jos tämä arvo vastaa valitsinlausekkeessa välitettyjä arvoja, kyseinen käsky suoritetaan. Tässä aiheesta aiomme oppia CASE-lauseesta PL / SQL: ssä.

Syntaksi

Nyt kun sinulla on käsitys siitä, mikä CASE-lause on PL / SQL: ssä, katsotaanpa CASE-lauseen syntaksia.

CASE (expression)
WHEN THEN statement_l;
WHEN THEN statement_2;
WHEN THEN statement_3;
ELSE default_statement;
END CASE;

Koodin selitys

Yllä olevassa syntaksissa lauseke palauttaa minkä tahansa tietotyypin arvon, kaikilla lauseilla on ennalta määritetty yksilöllinen arvo, CASE-lauseke käy läpi kaikki lauseet, kunnes se saa arvon lausekkeessa määritetyn tarkan vastaavuuden, tässä tapauksessa, Arvo_1, Arvo_2 ja Arvo_3. Jos Case-lausekkeella ei löytynyt vastaavuutta lausekkeesta, oletuslauseke suoritetaan.

Huomaa, että ELSE-lohko on valinnainen ja jos et halua, että jokin oletuslauseke saadaan suoritettua, voit ohittaa tämän käskyn. END-tapaus on pakollinen osa tapausta.

Vuokaavio

Kuinka tapauslause toimii PL / SQL: ssä?

Vaikka Oracle 9i: ssä esitetty CASE-lausunto on sitä käytetty laajalti muissa ohjelmointikielissä. Kuten muutkin ohjelmointikielet, CASE-käsky toimii samalla tavalla.

Oracle 9i tukee kahta tyyppisiä CASE-lauseita, yksinkertaista CASE-käskyä ja etsittyä CASE-käskyä

1. Yksinkertainen tapauslausunto

Yksinkertaisessa tapauslausunnossa käsky suoritetaan, jos lausekkeen arvo vastaa ilmoitettua ehtoa. Nämä lausekkeen ehdot määritetään ennalta kirjoitettaessa CASE-käskyä. Kun kääntäjä löytää vastaavuuden, se katkeaa ja tulee ulos silmukasta käskyn suorittamisen jälkeen välttäen tarpeetonta lausekkeen arviointia. Jos kääntäjä ei löytänyt vastaavuutta, se suorittaa oletustapauskäskyn. Oletustapaus ei ole pakollinen, ja se voidaan ohittaa.

Syntaksi

CASE expression
WHEN condition_1 THEN
statements1
WHEN condition_2 THEN
statements2

ELSE
statements_else
END CASE;

Selitys

Kuten aiemmin mainittiin, ELSE-tapaus on valinnainen. Kääntäjä arvioi ensin CASE-lausekkeen, sitten vertaa lauseketta ensimmäiseen ehtoon. Jos ehto vastaa lauseketta 1, se suoritetaan, muuten ehto 2 tarkistetaan ja niin edelleen.

Katsotaanpa jotain reaaliaikaista esimerkkiä käsityksen ymmärtämiseksi selkeämmin

SELECT Employee_Name,
CASE rating
WHEN 1 THEN 'Low'
WHEN 3 THEN 'High'
ELSE 'Medium' END
FROM Review;

Oletetaan, että on tarkistustaulukko, jossa on työntekijöiden vuoden lopun palautetiedot, ja sinun on näytettävä työntekijän nimi ja arvosanat. Mutta numeroiden sijasta, jotka haluat näyttää, Luokitusluokitus on alhainen, arvosanan ylin on 3, muuten keskitasoinen.

Yllä kirjoitettu kysely tuottaa alla olevat tulokset

Työntekijän_nimi CASECR

---------

Bogart Low

Nolte Medium

Loren Medium

Gueney korkea

2. Haettu CASE-lausunto

Haettu CASE-lause on hieman erilainen kuin yksinkertainen CASE-lause. Etsittyyn tapauslausumaan ennalta määritetyn ehdon sijaan voit kirjoittaa ehdon, joka arvioidaan suorituksen aikana.

Katsotaanpa tässä esimerkissä Etsitty CASE -käskyn syntaksia

CASE
WHEN salary >= 10000 AND salary <=20000 THEN
AllocateBonus(employee_id, 1500);
WHEN salary > 20000 AND salary <= 40000 THEN
AllocateBonus(employee_id, 1000);
WHEN salary > 40000 THEN
AllocateBonus(employee_id, 500);
WHEN salary > 60000 THEN
AllocateBonus(employee_id, 250);
ELSE
AllocateBonus(employee_id, 0);
END CASE;

Oletetaan, että vaatimus on jakaa palkkiot työntekijälle hänen nykyisen palkka-alueensa perusteella. Jos työntekijä kuuluu tiettyihin kriteereihin, AllocateBonus-funktiolle pitäisi saada kutsu, joka parametrina ottaa työntekijän tunnuksen ja määrän bonuksen.

Yllä olevassa esimerkissä olemme määritellyt eri palkka-alueet ja perustuen siihen AllocateBonus-toimintoon soitetaan, jos palkka kuuluu määritellylle alueelle.

Huomaa : Jokaisessa iteraatiossa yksi ja vain yksi lause suoritetaan, vaikka useat lauseet täyttävät kriteerit. Kun lauseita arvioidaan aina järjestyksessä ylhäältä alas.

vinkkejä

Koska WHEN-lauseketta arvioidaan tietyssä järjestyksessä eli ylhäältä alas, suositellaan luettelemaan lauseita, jotka todennäköisimmin esiintyvät ensin tai taajuus on enemmän. Minkä tahansa WHEN-lauseen lisäksi on kallis, eli lausekkeen, joka vaatii paljon CPU-muistia, pitäisi olla viimeksi läsnä, jotta mahdollisuudet toteutukseen minimoidaan.

3. Nested CASE -lausunto

Kuten sisäkkäinen IF-ELSE -käsky, myös CASE-käsky voidaan upottaa. Syntaksi pysyy samana vain, että kun ulompi ehto täyttää kriteerit, se käy läpi taas joukon lauseita. Improvisoidaan edellä etsitty CASE-esimerkki ymmärtääksesi, kuinka Nested CASE -käsky toimii.

CASE
WHEN salary >= 10000 THEN
CASE
WHEN salary <= 20000 THEN
AllocateBonus(employee_id, 1500);
WHEN salary > 20000 THEN
AllocateBonus(employee_id, 1000);
END CASE;
WHEN salary > 40000 THEN
AllocateBonus(employee_id, 500);
WHEN salary < 10000 THEN
give_bonus(employee_id, 0);
END CASE;

Selitys

Kuten näet, syntaksi pysyy samana kuin se, että kun ehto täyttää sen uudelleen, käy läpi CASE-käsky toteuttaaksesi lopulta Allocate-toiminnon.

Johtopäätös - CASE-lause PL / SQL: ssä

Nyt kun olemme päässeet artikkelin loppuun, tehdään yhteenveto keskeisistä seikoista, joista olemme keskustelleet tässä artikkelissa. Olemme nähneet, mikä on CAS / lause PL / SQL: ssä, oppineet perussyntaksin esimerkillä. Olemme keskustelleet erityyppisistä CASE-lauseista eli yksinkertaisesta CASE-, etsimästä CASE- ja Nested CASE -lausunnosta esimerkillä. Olemme myös oppineet, kuinka voimme optimoida CASE-lausunnon tilaamalla WHEN-lauseen oikein.

Suositellut artikkelit

Tämä on opas CAS / lauseeseen PL / SQL: ssä. Tässä keskustellaan siitä, kuinka tapauslausunto toimii PL / SQL: ssä esimerkkien ja syntaksin kanssa. Saatat myös katsoa seuraavia artikkeleita saadaksesi lisätietoja -

  1. Mikä on PL / SQL?
  2. PL / SQL-komennot
  3. SQL: n käyttö
  4. Ura PL / SQL: ssä
  5. IF-muu lausunto Matlabissa
  6. Silmukoita PL / SQL: ssä