Bevezetés az esettanulmányba a PL / SQL-ben

A PLE / SQL-ben szereplő CASE utasítás hasonló az IF-ELSEIF feltételhez, ahol a blokkban különböző feltételek vannak felsorolva, és csak azokat a utasításokat hajtják végre, amelyeknek megfelel a feltétel. A CASE utasítás egy logikai kifejezés helyett megegyezik a kifejezés értékével. A kifejezés bármilyen adattípus lehet, és ugyanazt az adattípust kell használni az utasításokban. Minden utasításnak van egy előre meghatározott értéke, és ha ez az érték megegyezik a választó kifejezésben átadott értékekkel, akkor az adott utasítás végrehajtásra kerül. Ebben a témakörben megismerjük a CASE utasításot a PL / SQL-ben.

Szintaxis

Most, hogy áttekintést kapsz arról, hogy mi a CASE utasítás a PL / SQL-ben, nézzük meg a CASE utasítás szintaxisát.

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

Kód magyarázat

A fenti szintaxisban a kifejezés bármilyen adattípus értékét adja vissza, az összes állításnak előre meghatározott egyedi értéke lesz, a CASE kifejezés mindegyik kijelentésen megy keresztül, amíg meg nem kapja az értékkifejezésben megadott pontos egyezést. Ebben az esetben, Érték_1, Érték2 és Érték3. Ha a Case kifejezés nem találta a megfelelőt az utasításban, akkor az alapértelmezett utasítás kerül végrehajtásra.

Vegye figyelembe, hogy az ELSE blokk opcionális, és ha nem akarja, hogy az alapértelmezett utasítás végrehajtásra kerüljön, kihagyhatja ezt az utasítást. Az END eset az eset kötelező része.

Folyamatábra

Hogyan működik az ügyleírás PL / SQL-ben?

Noha az Oracle 9i-be bevezetett CASE nyilatkozatot széles körben használják a többi programozási nyelvben. Más programozási nyelvekhez hasonlóan a CASE utasítás hasonló módon működik.

Az Oracle 9i támogatja a CASE utasítások két típusát: az egyszerű CASE utasítás és a keresett CASE utasítás

1. Egyszerű nyilatkozat

Az egyszerű eset utasításban egy utasítás kerül végrehajtásra, ha a kifejezés értéke megegyezik a megadott feltétellel. Ezeket az utasításfeltételeket előre definiálják a CASE utasítás írása közben. Amint a fordító talál egyezést, az eltörik és kijön a körből, az utasítás végrehajtása után, elkerülve a felesleges kifejezésértékelést. Ha a fordító nem talált egyezést, akkor végrehajtja az alapértelmezett eset nyilatkozatát. Az alapértelmezett eset nem kötelező, és kihagyható.

Szintaxis

CASE expression
WHEN condition_1 THEN
statements1
WHEN condition_2 THEN
statements2

ELSE
statements_else
END CASE;

Magyarázat

Mint korábban említettük, az ELSE eset választható. A fordító először értékeli a CASE kifejezést, majd összehasonlítja a kifejezést az első feltétellel. Ha a feltétel megegyezik az 1. kifejezéssel, akkor végrehajtásra kerül, ellenkező esetben a 2. feltételt ellenőrizzük és így tovább.

Lássunk néhány valós idejű példát a koncepció világosabb megértésére

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

Tegyük fel, hogy van egy áttekintő táblázat, amely tartalmazza az alkalmazottak év végi visszajelzéseit, és meg kell adnia a munkavállaló nevét és a besorolást. De a megmutatni kívánt számok helyett a besorolás alacsony értéke 1, a besorolás legmagasabb értéke 3, egyébként közepes.

A fent írt lekérdezés az alábbi eredményeket fogja eredményezni

Employee_Name CASECR

---------

Bogart Low

Nolte Medium

Loren Medium

Gueney magas

2. Keresett CASE nyilatkozat

A keresett CASE utasítás kissé különbözik az egyszerű CASE utasítástól. A Kutatott eset nyilatkozatban az előre definiált feltétel helyett olyan feltételt is írhat, amelyet a futási időben értékelnek.

nézzük meg a Például a Kutatott CASE utasítás szintaxist

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;

Tegyük fel, hogy az a követelmény, hogy bónuszokat kell kiosztani a munkavállalónak a jelenlegi fizetési tartománya alapján. Ha egy alkalmazott egy bizonyos kritérium alá tartozik, akkor meg kell hívni az AllocateBonus függvényt, amely paramétereként a töötaja_id és összeg bónuszt veszi figyelembe.

A fenti példában meghatároztuk a különféle fizetési tartományokat, és ennek alapján az AllocateBonus függvényt meghívjuk, ha a fizetés a megadott tartományba esik.

Megjegyzés : Minden iterációban egyetlen és egyetlen utasítás kerül végrehajtásra, annak ellenére, hogy több utasítás megfelel a kritériumoknak. Amikor a záradékokat mindig felülről lefelé értékelik.

tippek

Mivel a WHEN-záradékot bizonyos sorrendben értékelik, azaz fentről lefelé, ajánlott lenne felsorolni azokat a záradékokat, amelyek a legvalószínűbb először előfordulni, vagy annál gyakoribb. Bármely WHEN kikötés mellett drága, azaz olyan kifejezésnek, amely sok CPU memóriát igényel, az utolsónak jelen kell lennie annak érdekében, hogy minimalizáljuk a végrehajtás esélyét.

3. Beágyazott CASE nyilatkozat

A beágyazott IF-ELSE utasításhoz hasonlóan a CASE utasítás beágyazható is. A szintaxis változatlan marad, csak amikor a külső feltétel teljesíti a kritériumokat, akkor ismét egy állítások sorozatán megy keresztül. Improvizáljuk a fent keresett CASE példát, hogy megértsük, hogyan működik a Nested CASE utasítás.

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;

Magyarázat

Amint látja, a szintaxis változatlan marad, csak akkor, amikor a feltétel ismét teljesül, menjen át egy CASE utasításon keresztül az Allocate függvény végleges végrehajtásához.

Következtetés - CASE nyilatkozat a PL / SQL-ben

Most, hogy elértük a cikk végét, foglaljuk össze a kulcsfontosságú pontokat, amelyeket a cikkben tárgyaltunk. Láttuk, hogy mi az a CASE utasítás a PL / SQL-ben, megtanultuk az alapszintaxist egy példával. Példaként tárgyaltuk a CASE-állítás különféle típusait, azaz az egyszerű CASE-t, a keresett CASE-t és a beágyazott CASE-nyilatkozatot. Megtanultuk azt is, hogyan lehet optimalizálni a CASE nyilatkozatot a WHEN záradék megfelelő megrendelésével.

Ajánlott cikkek

Ez egy útmutató a CAS / PLE / SQL utasításhoz. Itt megvitatjuk, hogy hogyan működik az ügyleírás PL / SQL-ben a példákkal és a szintaxissal. Lehet, hogy megnézi a következő cikkeket is, ha többet szeretne megtudni -

  1. Mi az a PL / SQL?
  2. PL / SQL parancsok
  3. Az SQL felhasználása
  4. Karrier PL / SQL formátumban
  5. IF-Egyéb nyilatkozat a Matlab-ban
  6. Hurkok a PL / SQL-ben