Introduktion til case statement i PL / SQL

CASE-erklæringen i PL / SQL svarer til IF-ELSEIF-betingelsen, hvor forskellige betingelser er anført i en blok, og kun at udsagn udføres, som det opfylder betingelsen. CASE-sætning matcher udtrykværdien i stedet for et boolskt udtryk. Udtrykket kan være af en hvilken som helst datatype, og den samme datatype skal bruges i udsagnene. Hver sætning har en foruddefineret værdi, og hvis denne værdi stemmer overens med de værdier, der er passeret i valgudtrykket, udføres den pågældende sætning. I dette emne skal vi lære om CASE-erklæringen i PL / SQL.

Syntaks

Nu hvor du har fået en overvejelse af, hvad en CASE-erklæring i PL / SQL er, lad os se på syntaksen til CASE-erklæringen.

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

Kode forklaring

I syntaksen ovenfor returnerer udtrykket en værdi af en hvilken som helst datatype, alle udsagn vil have en foruddefineret unik værdi, CASE-udtrykket vil gennemgå alle udsagn, indtil det får den nøjagtige match, der er defineret i værdiudtrykket, i dette tilfælde, Value_1, Value_2 og Value_3. Hvis sagudtrykket ikke fandt matchen i erklæringen, udføres standarderklæringen.

Bemærk, at ELSE-blokken er valgfri, og hvis du ikke vil have nogen standarderklæring, der skal udføres, kan du springe denne erklæring over. END-sagen er en obligatorisk del af sagen.

Flowdiagram

Hvordan fungerer sagerklæringen i PL / SQL?

Selvom CASE-erklæringen blev introduceret i Oracle 9i, er den blevet brugt meget på de andre programmeringssprog. Som andre programmeringssprog fungerer CASE-erklæringen på en lignende måde.

Oracle 9i understøtter to typer CASE-erklæringer enkel CASE-erklæring og søgte CASE-erklæring

1. Enkel sagserklæring

I den enkle sagsangivelse udføres en erklæring, hvis udtrykværdien stemmer overens med den angivne tilstand. Disse erklæringsbetingelser er foruddefineret, når du skriver CASE-erklæringen. Når kompilatoren finder et match, bryder den og kommer ud af løkken efter at have udført udsagnet og undgår yderligere unødvendig evaluering af udtryk. Hvis kompilatoren ikke fandt nogen match, udfører den erklæringen om standardsagen. Standardsagen er ikke obligatorisk og kan springes over.

Syntaks

CASE expression
WHEN condition_1 THEN
statements1
WHEN condition_2 THEN
statements2

ELSE
statements_else
END CASE;

Forklaring

Som nævnt tidligere er ELSE-sagen valgfri. Compileren evaluerer først CASE-udtrykket, derefter sammenligner den udtrykket med den første betingelse. Hvis betingelsen stemmer overens med udtryksangivelsen 1 vil blive udført, ellers kontrolleres betingelse 2 osv.

Lad os se et eksempel i realtid for at forstå begrebet mere tydeligt

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

Lad os antage, at der er en gennemgangstabel, der har medarbejdernes årsoplysninger om feedback, og du skal vise medarbejderens navn og ratings. Men i stedet for numre, du vil vise Lav af vurderingen er 1, Høj af bedømmelsen er 3 ellers medium.

Ovenstående forespørgsel giver de følgende resultater

Medarbejdernavn CASECR

------– --

Bogart Low

Nolte Medium

Loren Medium

Gueney High

2. Søgt CASE-erklæring

Den søgte CASE-erklæring er lidt anderledes end den enkle CASE-erklæring. I erklæringen med søgte sager i stedet for en foruddefineret betingelse, kan du skrive en betingelse, der vil blive evalueret på kørselstidspunktet.

lad os se på syntaks for søgte CASE-sætninger med dette eksempel

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;

Antag, at kravet er at tildele bonusser til en medarbejder baseret på hans / hendes aktuelle lønområde. Hvis en medarbejder falder ind under visse kriterier, skal AllocateBonus-funktion kaldes, hvilket tager medarbejder_id og beløbsbonus som parametrene.

I eksemplet ovenfor har vi defineret forskellige lønområder og baseret på, at AllocateBonus-funktionen bliver kaldt, hvis lønnen falder inden for det specificerede interval.

Bemærk : I hver iteration udføres en og kun en sætning, selvom flere udsagn opfylder kriterierne. Når klausuler altid evalueres i rækkefølge fra top til bund.

Tips

Da WHEN-klausulen evalueres i en bestemt rækkefølge, dvs. fra top til bund, ville det anbefales at angive de klausuler, der mest sandsynligt forekommer først, eller frekvensen er mere. Ud over enhver WHEN-klausul er et dyrt, dvs. udtryk, der kræver en masse CPU-hukommelse, skal være til sidst for at minimere chancerne for at blive henrettet.

3. Indlejret CASE-erklæring

Ligesom den indlejrede IF-ELSE-erklæring kan CASE-erklæringen også indlejres. Syntaks forbliver den samme netop, når den ydre betingelse opfylder kriterierne, den igen gennemgår en række udsagn. Lad os improvisere ovenstående søgte CASE-eksempel for at forstå, hvordan Nested CASE-erklæringen fungerer.

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;

Forklaring

Som du ser, er syntaksen den samme netop, når betingelsen opfylder den igen gennem en CASE-erklæring for endelig at udføre allokeringsfunktionen.

Konklusion - CASE-erklæring i PL / SQL

Nu hvor vi er nået til slutningen af ​​artiklen, lad os sammenfatte de vigtigste punkter, som vi har drøftet i denne artikel. Vi har set, hvad en CASE-erklæring i PL / SQL er, lært den grundlæggende syntaks med et eksempel. Vi har drøftet de forskellige typer CASE-erklæring, dvs. simple CASE, Searched CASE og Nested CASE statement med et eksempel. Vi har også lært, hvordan vi kan optimere CASE-erklæringen ved den rigtige ordre af WHEN-klausulen.

Anbefalede artikler

Dette er en guide til CASE-erklæringen i PL / SQL. Her diskuterer vi, hvordan hvordan sagens udsagn fungerer i PL / SQL med eksemplerne og syntaks. Du kan også se på de følgende artikler for at lære mere -

  1. Hvad er PL / SQL?
  2. PL / SQL-kommandoer
  3. Anvendelser af SQL
  4. Karrierer i PL / SQL
  5. IF-Else-erklæring i Matlab
  6. Sløjfer i PL / SQL