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 -
- Mikä on PL / SQL?
- PL / SQL-komennot
- SQL: n käyttö
- Ura PL / SQL: ssä
- IF-muu lausunto Matlabissa
- Silmukoita PL / SQL: ssä