Uvod u Izjavu o slučaju u PL / SQL

Izjava CASE u PL / SQL slična je uvjetu IF-ELSEIF gdje su različiti uvjeti navedeni u bloku i izvršavaju se samo oni izrazi za koje zadovoljava uvjet. Izraz CASE odgovara vrijednosti izraza umjesto boolean izraz. Izraz može biti bilo koje vrste podataka i u izjavama se mora upotrijebiti ista vrsta podataka. Svaki izraz ima unaprijed definiranu vrijednost i ako se ta vrijednost podudara s vrijednostima prenesenim u selektorskom izrazu, tada se ta naredba izvršava. U ovoj ćemo temi naučiti o izrazu CASE u PL / SQL.

Sintaksa

Sada kada ste shvatili što je CASE izjava u PL / SQL, pogledajmo sintaksu izraza CASE.

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

Objašnjenje koda

U gornjoj sintaksi izraz će vratiti vrijednost bilo koje vrste podataka, svi će izrazi imati unaprijed definiranu jedinstvenu vrijednost, izraz CASE proći će kroz sve izjave sve dok ne dobije točno podudaranje definirano u izrazu vrijednosti, u ovom slučaju, Value_1, Value_2 i Value_3. Ako izraz Case ne pronađe podudaranje u izrazu, tada će se izvršiti zadana izjava.

Imajte na umu da je ELSE blok neobvezan i ako ne želite da se izvrši bilo koji zadani izraz, možete preskočiti ovu izjavu. Slučaj END obvezan je dio slučaja.

Dijagram toka

Kako izjava slučaja funkcionira u PL / SQL?

Iako je izjava CASE predstavljena u Oracle 9i, ona se široko koristi u ostalim programskim jezicima. Kao i drugi programski jezici, izjava CASE djeluje na sličan način.

Oracle 9i podržava dvije vrste CASE izjava jednostavnih CASE izjava i pretraživanih CASE izjava

1. Jednostavna izjava slučaja

U jednostavnom slučaju, izjava se izvršava ako se vrijednost izraza podudara s navedenim uvjetom. Ovi su uvjeti unaprijed definirani tijekom pisanja izjave CASE. Jednom kada prevodilac pronađe podudaranje, on se prekida i izlazi iz petlje nakon što izvrši izjavu, izbjegavajući daljnju nepotrebnu procjenu izraza. Ako prevoditelj ne nađe nijedno podudaranje, izvršiće izjavu zadanog slučaja. Zadani slučaj nije obvezan i može se preskočiti.

Sintaksa

CASE expression
WHEN condition_1 THEN
statements1
WHEN condition_2 THEN
statements2

ELSE
statements_else
END CASE;

Obrazloženje

Kao što je spomenuto ranije, slučaj ELSE nije obvezan. Sastavljač prvo procjenjuje izraz CASE, a zatim uspoređuje izraz s prvim uvjetom. Ako se uvjet podudara s izrazom 1 izraza, izvršit će se u suprotnom, uvjet 2 je provjeren i tako dalje.

Pogledajmo neki primjer u stvarnom vremenu kako bismo jasnije razumjeli koncept

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

Pretpostavimo da postoji pregledna tablica s podacima o povratnim informacijama o kraju zaposlenika i da morate pokazati ime zaposlenika i ocjene. Ali umjesto brojeva koje želite pokazati Niska ocjena je 1, Visoka ocjena 3 inače je srednja.

Gore napisani upit rezultirat će donjim rezultatima

Employee_Name CASECR

------–--

Bogart Low

Nolte Medium

Loren Medium

Gueney High

2. Pretražena izjava o SLUČAJU

Traženi izraz CASE malo se razlikuje od jednostavnog CASE izraza. U Izjavi o pretraživanom slučaju umjesto unaprijed definiranog stanja, možete napisati uvjet koji će se procijeniti u vremenu izvođenja.

pogledajmo sintaksu Searched CASE izraza s ovim primjerom

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;

Pretpostavimo da je uvjet dodijeliti bonuse zaposleniku na temelju njegovog / njezinog trenutnog raspona plaća. Ako zaposlenik upada u određene kriterije, treba nazvati AllocateBonus funkciju koja uzima kao parametar zaposlenik i iznos bonusa.

U gornjem primjeru definirali smo različite raspone plaća i na temelju te funkcije AllocateBonus nazvat ćemo se ako plaća padne u navedenom rasponu.

Napomena : U svakoj iteraciji jedan i samo jedan iskaz će se izvršiti iako više iskaza zadovoljava kriterije. Kad se klauzule uvijek ocjenjuju prema redoslijedu od vrha prema dnu.

Savjet

Budući da se klauzula KAD ocjenjuje određenim redoslijedom, tj. Od vrha do dna, preporučljivo je navesti klauzule koje se najvjerojatnije pojavljuju prve ili je učestalost veća. Uz izraz WHEN klauzula je skupa tj. Izraz za koji je potrebno puno CPU memorije treba biti prisutno posljednje kako bi se umanjile šanse za izvršavanje.

3. Gnijezdena CASE izjava

Kao i ugniježđena IF-ELSE izjava, i CASE izjava može se ugniježditi. Sintaksa ostaje ista samo kad vanjski uvjet zadovolji kriterije, opet prolazi kroz niz izjava. Hajde da improviziramo gore traženi primjer CASE da bismo razumjeli kako funkcionira gnijezda CASE.

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;

Obrazloženje

Kao što vidite, sintaksa ostaje ista samo što kad uvjet to zadovolji ponovo prođite kroz CASE izraz da biste konačno izvršili funkciju Allocate.

Zaključak - CASE izjava u PL / SQL

Sada kada smo došli do kraja članka, sažmemo ključne točke o kojima smo raspravljali u ovom članku. Vidjeli smo što je CASE izraz u PL / SQL, uz primjere naučili osnovnu sintaksu. S primjerom smo razgovarali o različitim vrstama izraza CASE, tj. Jednostavnim CASE, pretraženim CASE i stavkom CASE. Također smo naučili kako optimizirati CASE izjavu pravilnim određivanjem klase WHEN.

Preporučeni članci

Ovo je vodič za CASE izjavu u PL / SQL. Ovdje raspravljamo o tome kako Izjava slučaja funkcionira u PL / SQL s Primjerima i sintaksom. Možete također pogledati sljedeće članke da biste saznali više -

  1. Što je PL / SQL?
  2. PL / SQL naredbe
  3. Upotrebe SQL-a
  4. Karijera u PL / SQL
  5. IF-Else izjava u Matlabu
  6. Petlje u PL / SQL

Kategorija: