Uvod v izpisek primera v PL / SQL

Stavek CASE v PL / SQL je podoben pogoju IF-ELSEIF, kjer so v bloku navedeni različni pogoji in izvajajo se le tisti stavki, za katere izpolnjuje pogoj. Stavek CASE se ujema z vrednostjo izraza namesto z logičnim izrazom. Izraz je lahko katerega koli tipa podatkov in v stavkih je treba uporabiti isto vrsto podatkov. Vsak stavek ima vnaprej določeno vrednost in če se ta vrednost ujema z vrednostmi, ki jih posreduje izbirni izraz, potem se ta posamezen stavek izvrši. V tej temi bomo spoznali stavek CASE v PL / SQL.

Sintaksa

Zdaj, ko ste dobili vsebino o tem, kaj je stavek CASE v PL / SQL, si oglejmo sintago izjave CASE.

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

Pojasnilo kode

V zgornji sintaksi bo izraz vrnil vrednost katerega koli podatkovnega tipa, vsi stavki bodo imeli vnaprej določeno edinstveno vrednost, izraz CASE bo šel skozi vse stavke, dokler ne bo dobil natančnega ujemanja, ki je opredeljeno v vrednostnem izrazu, v tem primeru, Value_1, Value_2 in Value_3. Če izraz Case ne najde ujemanja v stavku, se privzeti stavek izvrši.

Upoštevajte, da je blok ELSE neobvezen in če ne želite, da se privzeti stavek izvrši, lahko to izjavo preskočite. Zadeva END je obvezen del primera.

Diagram pretoka

Kako deluje izjava v PL / SQL?

Čeprav je izjava CASE, uvedena v Oracle 9i, se pogosto uporablja v drugih programskih jezikih. Tako kot drugi programski jeziki tudi izjava CASE deluje na podoben način.

Oracle 9i podpira dve vrsti stavkov CASE: preprost stavek CASE in iskan CASE stavek

1. Enostavna izjava o primeru

V preprostem primeru se stavek izvrši, če se vrednost izraza ujema z navedenim pogojem. Ti pogoji izjave so vnaprej določeni med pisanjem izjave CASE. Ko prevajalnik najde ujemanje, se zlomi in izide iz zanke po izvedbi stavka, s čimer se izogne ​​nadaljnji nepotrebni oceni izrazov. Če prevajalnik ni našel nobenega ujemanja, bo izvedel stavek privzetega primera. Privzeti primer ni obvezen in ga je mogoče preskočiti.

Sintaksa

CASE expression
WHEN condition_1 THEN
statements1
WHEN condition_2 THEN
statements2

ELSE
statements_else
END CASE;

Pojasnilo

Kot smo že omenili, primer ELSE ni izbiren. Prevajalnik najprej oceni izraz CASE, nato pa primerja izraz s prvim pogojem. Če se stanje ujema z izrazom 1, se izvede, drugače se preveri stanje 2 in tako naprej.

Poglejmo nekaj primerov v realnem času, da lahko koncept bolj razumemo

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

Predpostavimo, da obstaja pregledna tabela, ki vsebuje podrobnosti o povratnih informacijah ob koncu leta in morate pokazati ime zaposlenega in ocene. Toda namesto številk, ki jih želite prikazati Nizka ocena je 1, Visoka ocena je 3, sicer srednja.

Zgoraj napisana poizvedba bo dala spodnje rezultate

Zaposleni_Name CASECR

------–--

Bogart Nizka

Nolte Medium

Loren Medium

Gueney High

2. Iskana izjava CASE

Iskan stavek CASE je nekoliko drugačen kot preprost stavek CASE. V izjavo o iskanem primeru namesto vnaprej določenega pogoja lahko napišete pogoj, ki bo ocenjen v času izvajanja.

poglejmo si sintaks iskanega stavka CASE s tem primerom

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;

Predpostavimo, da je zahteva za dodelitev bonitet zaposlenemu na podlagi njegovega trenutnega razpona plač. Če zaposleni sodi v določena merila, bi morali poklicati funkcijo AllocateBonus, ki kot parametre vzame zaposleni_id in znesek bonusa.

V zgornjem primeru smo definirali različne razpone plač in na podlagi te funkcije AllocateBonus bomo poklicali, če plača pade v določenem območju.

Opomba : Pri vsaki iteraciji se izvede en in samo en stavek, čeprav več stavkov ustreza kriterijem. Kadar se klavzule vedno ocenjujejo po vrstnem redu od zgoraj navzdol.

Nasveti

Ker je klavzula WHEN ocenjena v določenem vrstnem redu, tj. Od zgoraj navzdol, bi bilo priporočljivo našteti klavzule, ki se bodo najverjetneje pojavile prve ali pa je večja pogostost. Poleg tega, da je klavzula WHEN drago, tj. Izraz, ki zahteva veliko CPU pomnilnika, mora biti zadnji prisoten, da se čim bolj zmanjšajo možnosti za njegovo izvršitev.

3. ugnezdena izjava CASE

Tako kot ugnezdeni stavek IF-ELSE se lahko tudi izjava CASE ugnezdi. Skladnja ostaja enaka samo, ko zunanji pogoj izpolnjuje kriterije, gre spet skozi vrsto stavkov. Da improviziramo zgoraj iskan primer CASE, da razumemo, kako deluje stavek CASE 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;

Pojasnilo

Kot vidite, sintaksa ostaja enaka, le da ko pogoj ponovno izpolni, pojdite skozi stavek CASE, da končno izvedete dodelitev funkcije.

Zaključek - Stavek CASE v PL / SQL

Zdaj, ko smo prišli do konca članka, povzamemo ključne točke, o katerih smo govorili v tem članku. Videli smo, kaj je stavek CASE v PL / SQL, s primerom pa smo se naučili osnovne skladnje. S primerom smo razpravljali o različnih vrstah izjave CASE, tj. Preprosti CASE, iskani CASE in stavki ugnezdeni CASE. Izvedeli smo tudi, kako lahko optimiziramo izjavo CASE s pravilnim zaporedjem določila WHEN.

Priporočeni članki

To je vodnik po stavku CASE v PL / SQL. Tukaj razpravljamo o tem, kako deluje izjava v PL / SQL s primeri in sintakso. Za več informacij si lahko ogledate tudi naslednje članke -

  1. Kaj je PL / SQL?
  2. PL / SQL ukazi
  3. Uporaba SQL
  4. Kariera v PL / SQL
  5. Izjava IF-Else v Matlabu
  6. Zanke v PL / SQL