Introduksjon til sakuttalelse i PL / SQL

CASE-uttalelsen i PL / SQL er lik IF-ELSEIF-tilstanden der forskjellige forhold er oppført i en blokk og bare at uttalelser blir utført som den tilfredsstiller betingelsen. CASE-setning samsvarer med uttrykksverdien i stedet for et boolskt uttrykk. Uttrykket kan være av hvilken som helst datatype, og den samme datatypen må brukes i utsagnene. Hver uttalelse har en forhåndsdefinert verdi, og hvis den verdien samsvarer med verdiene som er gitt i velgeruttrykket, blir den aktuelle uttalelsen utført. I dette emnet skal vi lære om CASE-setningen i PL / SQL.

syntax

Nå som du har fått et inntrykk av hva en CASE-uttalelse i PL / SQL er, la oss se på syntaksen til CASE-setningen.

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

Kode forklaring

I syntaksen over vil uttrykket returnere en verdi av hvilken som helst datatype, alle utsagnene vil ha en forhåndsdefinert unik verdi, CASE-uttrykket vil gå gjennom alle utsagnene til det får den eksakte samsvar som er definert i verdiuttrykket, i dette tilfellet, Verdi_1, verdi_2 og verdi_3. Hvis sakuttrykket ikke fant samsvaret i uttalelsen, vil standarduttalelsen bli henrettet.

Merk at ELSE-blokkeringen er valgfri, og hvis du ikke vil at noen standarderklæring skal bli kjørt, kan du hoppe over denne uttalelsen. END-saken er en obligatorisk del av saken.

Flytdiagram

Hvordan fungerer saksuttalelsen i PL / SQL?

Selv om CASE-uttalelsen ble introdusert i Oracle 9i, har den blitt mye brukt på andre programmeringsspråk. I likhet med andre programmeringsspråk fungerer CASE-uttalelsen på lignende måte.

Oracle 9i støtter to typer CASE-uttalelser enkel CASE-uttalelse og gjennomført CASE-uttalelse

1. Enkelt saksuttalelse

I den enkle saksuttalelsen blir et utsagn kjørt hvis uttrykksverdien stemmer overens med den oppgitte tilstanden. Disse uttalelsesforholdene er forhåndsdefinerte når du skriver CASE-uttalelsen. Når kompilatoren finner en kamp, ​​brytes den og kommer ut av løkka etter å ha utført utsagnet og unngå ytterligere unødvendig uttrykksevaluering. Hvis kompilatoren ikke fant noen samsvar, vil den utføre uttalelsen om standardsaken. Standardsaken er ikke obligatorisk og kan hoppes over.

syntax

CASE expression
WHEN condition_1 THEN
statements1
WHEN condition_2 THEN
statements2

ELSE
statements_else
END CASE;

Forklaring

Som nevnt tidligere er ELSE-saken valgfri. Kompilatoren evaluerer først CASE-uttrykket, deretter sammenligner det uttrykket med den første tilstanden. Hvis tilstanden stemmer overens med uttrykk setningen 1 vil bli utført ellers blir tilstand 2 kontrollert og så videre.

La oss se noe sanntidseksempel for å forstå konseptet tydeligere

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

La oss anta at det er en gjennomgangstabell som har tilbakemeldingsdetaljer for ansatte ved årsslutt, og du må vise ansattes navn og rangeringer. Men i stedet for tall du vil vise Lav av karakteren er 1, er Høy av vurderingen 3 ellers middels.

Spørsmålet som er skrevet over vil gi resultatene nedenfor

Employee_Name CASECR

------– --

Bogart Low

Nolte Medium

Loren Medium

Gueney High

2. Søkt CASE-uttalelse

Den søkte CASE-uttalelsen er litt annerledes enn den enkle CASE-uttalelsen. I søknadsoppgavene i stedet for en forhåndsdefinert tilstand, kan du skrive en betingelse som vil bli evaluert på kjøretidspunktet.

la oss ta en titt på syntaks for Searched CASE-uttalelse med dette eksemplet

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;

Anta at kravet er å tildele bonuser til en ansatt basert på hans / hennes nåværende lønnsområde. Hvis en ansatt faller inn under visse kriterier, bør AllocateBonus-funksjonen bli kalt som tar medarbeider-ID og beløpsbonus som parametrene.

I eksemplet over har vi definert forskjellige lønnsområder og basert på at AllocateBonus-funksjonen vil bli kalt hvis lønnen faller innenfor det spesifiserte området.

Merk : I hver iterasjon vil én og bare én uttalelse bli utført selv om flere utsagn tilfredsstiller kriteriene. Når klausuler alltid evalueres i rekkefølge fra topp til bunn.

Tips

Siden WHEN-klausulen er evaluert i en viss rekkefølge, dvs. fra topp til bunn, vil det anbefales å liste ned de klausulene som mest sannsynlig vil oppstå først, eller frekvensen er mer. I tillegg til den når WHEN-leddet er, er et dyrt uttrykk, som krever mye CPU-minne, til slutt for å minimere sjansene for å bli henrettet.

3. Nøstet CASE-uttalelse

I likhet med den nestede IF-ELSE-uttalelsen, kan CASE-uttalelsen også nestes. Syntaksen forblir den samme bare når den ytre tilstand tilfredsstiller kriteriene, den igjen går gjennom en serie påstander. La oss improvisere ovennevnte CASE-eksempel for å forstå hvordan Nested CASE-setningen 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, bare når betingelsen tilfredsstiller den igjen, gjennom en CASE-uttalelse for endelig å utføre Tildel-funksjonen.

Konklusjon - CASE-uttalelse i PL / SQL

Nå som vi har kommet til slutten av artikkelen, la oss sammenfatte de viktigste punktene som vi har diskutert i denne artikkelen. Vi har sett hva en CASE-setning i PL / SQL er, lært den grunnleggende syntaks med et eksempel. Vi har diskutert de forskjellige typene CASE-uttalelser, dvs. enkel CASE, Searched CASE og Nested CASE-setningen med et eksempel. Vi har også lært hvordan vi kan optimalisere CASE-uttalelsen ved riktig bestilling av WHEN-leddet.

Anbefalte artikler

Dette er en guide til CASE-uttalelsen i PL / SQL. Her diskuterer vi at hvordan fungerer sakuttalelsen i PL / SQL med eksemplene og syntaks. Du kan også se på følgende artikler for å lære mer -

  1. Hva er PL / SQL?
  2. PL / SQL-kommandoer
  3. Bruk av SQL
  4. Karrierer i PL / SQL
  5. IF-Else-uttalelse i Matlab
  6. Looper i PL / SQL