Sissejuhatus juhtumikirjeldusse PL / SQL-is

CASE avaldus PL / SQL-is on sarnane IF-ELSEIF-i tingimusega, kus plokis on loetletud erinevad tingimused ja käivitatakse ainult need avaldused, mille jaoks see tingimuse vastab. CASE avaldus vastab tõeväärtuse avaldise väärtuse asemel avaldise väärtusele. Väljendiks võib olla mis tahes andmetüüp ja avaldustes tuleb kasutada sama andmetüüpi. Igal avaldusel on etteantud väärtus ja kui see väärtus ühtib valija avaldises edastatud väärtustega, siis see konkreetne avaldus täidetakse. Selles teemas õpime tundma CASE avaldust PL / SQL-is.

Süntaks

Nüüd, kui olete tutvunud PL / SQL-i CASE-avalduse sisuga, vaatame üle CASE-lause süntaksit.

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

Koodi seletus

Ülaltoodud süntaksis tagastab avaldis mis tahes andmetüübi väärtuse, kõigil avaldustel on eelnevalt määratletud unikaalne väärtus, CASE-avaldus läbib kõik avaldused, kuni see saab väärtuslauses määratletud täpse vaste, antud juhul, Väärtus_1, väärtus_2 ja väärtus_3. Kui juhtumiväljendus ei leidnud avalduses vastet, siis täidetakse vaikelause.

Pange tähele, et ELSE-blokk on valikuline ja kui te ei soovi, et mõni vaikimisi väljavõte käivitataks, võite selle välja jätta. END-juhtum on juhtumi kohustuslik osa.

Vooskeem

Kuidas kohtuasja kirjeldus PL / SQL-is töötab?

Ehkki Oracle 9i-s tutvustatud CASE-avaldus on seda teistes programmeerimiskeeltes laialdaselt kasutatud. Nagu teisedki programmeerimiskeeled, töötab ka CASE-lause sarnaselt.

Oracle 9i toetab kahte tüüpi CASE-avaldusi: lihtsat CASE-avaldust ja otsitud CASE-avaldust

1. Lihtne kohtuasja kirjeldus

Lihtsa juhtumi korral avaldus täidetakse, kui avaldise väärtus ühtib nimetatud tingimusega. Need avalduse tingimused on CASE väljavõtte kirjutamise ajal eelnevalt määratletud. Kui kompilaator leiab vaste, puruneb see ja väljub pärast avalduse täitmist ahelast, vältides edasist tarbetut avaldise hindamist. Kui kompilaator ei leidnud vastet, siis käivitab ta vaikimisi juhtumi avalduse. Vaikejuhtum pole kohustuslik ja selle võib vahele jätta.

Süntaks

CASE expression
WHEN condition_1 THEN
statements1
WHEN condition_2 THEN
statements2

ELSE
statements_else
END CASE;

Seletus

Nagu varem mainitud, on ELSE juhtum vabatahtlik. Esmalt hindab kompilaator CASE avaldist, seejärel võrdleb avaldist esimese tingimusega. Kui tingimus langeb kokku avaldisega 1, siis see täidetakse, vastasel juhul kontrollitakse tingimust 2 ja nii edasi.

Vaatame mõnd reaalajas näidet mõiste selgemaks mõistmiseks

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

Eeldame, et on olemas ülevaatustabel, kus on töötajate aastalõpu tagasiside üksikasjad ja peate näitama töötaja nime ja hinnanguid. Kuid numbrite asemel, mida soovite näidata, on reitingu madalaim väärtus 1, vastasel korral keskmise kõrgeim hinne 3.

Ülal kirjutatud päring annab järgmised tulemused

Töötaja_nimi CASECR

---------

Bogart Madal

Nolte Keskmine

Loren Keskmine

Gueney kõrge

2. Otsitud juhtumi avaldus

Otsitud CASE-lause on pisut erinev lihtsast CASE-avaldusest. Eelnevalt määratletud tingimuse asemel otsitud juhtumi avalduses saate kirjutada tingimuse, mida hakatakse töö ajal hindama.

vaatame selle näite otsitud CASE avalduse süntaksit

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;

Oletame, et nõue on eraldada töötajale preemiad vastavalt tema praegusele palgavahemikule. Kui töötaja vastab teatud kriteeriumidele, peaks saama AllocateBonuse funktsiooni, mille parameetriteks võetakse töötaja_id ja summa boonus.

Ülaltoodud näites oleme määratlenud erinevad palgavahemikud ja selle funktsiooni AllocateBonus põhjal kutsutakse, kui palk jääb määratletud vahemikku.

Märkus : igas iteratsioonis täidetakse üks ja ainult üks avaldus, isegi kui mitu avaldust vastavad kriteeriumidele. Kui klausleid hinnatakse alati ülalt alla.

Näpunäited

Kuna WHEN-klauslit hinnatakse kindlas järjekorras, st ülalt alla, soovitatakse loetleda need klauslid, mis esinevad kõige tõenäolisemalt esimesena või sagedus on suurem. Lisaks ükskõik millisele WHEN-i klauslile on see kallis, st avaldus, mis nõuab palju protsessori mälu, peaks viimati olemas olema, et minimeerida võimalusi selle täitmiseks.

3. Pesastatud juhtumi avaldus

Nagu pesastatud IF-ELSE väljavõte, saab ka CASE avalduse pesastada. Süntaks jääb samaks lihtsalt siis, kui välimine tingimus vastab kriteeriumidele, läbib see jälle rea väiteid. Improviseerime ülalnimetatud otsitud juhtumi näidet, et mõista, kuidas pesastatud CASE avaldus töötab.

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;

Seletus

Nagu näete, on süntaks samaks jäänud, kui siis, kui tingimus uuesti täidetakse, siis lugege CASE avaldus, et funktsioon Allocate lõpuks täita.

Järeldus - CASE avaldus PL / SQL-is

Nüüd, kui oleme jõudnud artikli lõppu, võtame kokku põhipunktid, mida oleme selles artiklis arutanud. Oleme näinud, mis on CAS / lause PL / SQL-is, õppinud näite põhjal põhisüntaksi. Oleme arutanud näitega CASE-avalduse eri tüüpe, st lihtsat CASE-i, otsitud CASE-i ja Nested CASE-avaldust. Samuti oleme õppinud, kuidas saaksime CASE-avaldust WHEN-klausli õige tellimisega optimeerida.

Soovitatavad artiklid

See on juhend CASE avaldusele PL / SQL-is. Siin arutleme selle üle, kuidas juhtumiaruanne PL / SQL-is töötab koos näidete ja süntaksiga. Võite lisateabe saamiseks vaadata ka järgmisi artikleid -

  1. Mis on PL / SQL?
  2. PL / SQL käsud
  3. SQL-i kasutusviisid
  4. Karjäär PL / SQL-is
  5. IF-muu avaldus Matlabis
  6. Lingid PL / SQL-is