CASE nyilatkozat be Oracle PL/SQL példákkal
⚡ Okos összefoglaló
A PL/SQL CASE utasítás egy szelektor alapján választ ki egy alternatívát a több közül, hasonlóan az IF-THEN-ELSIF utasításhoz, de egyértelműbbé téve azt. Egy egyszerű CASE egy szelektorértékkel egyezik, míg a keresett CASE kiértékel egy feltételt minden WHEN záradékban, és az első igaz feltételt futtatja.

Mi az a CASE utasítás?
A CASE utasítás hasonló az IF-THEN-ELSIF utasításhoz; egy alternatívát választ ki a rendelkezésre álló lehetőségek közül egy feltétel alapján.
- A CASE utasítás logikai kifejezés helyett „szelektort” használ a szekvencia kiválasztásához.
- A CASE utasításban szereplő kifejezés értékét szelektorként kezeli a rendszer.
- A kifejezés bármilyen típusú lehet (számtani, változós stb.).
- Minden alternatívához egy előre definiált érték (szelektor) van rendelve, és az az alternatíva kerül végrehajtásra, amelynek szelektorértéke megegyezik a feltételes kifejezés értékével.
- Az IF-THEN-ELSIF-től eltérően a CASE utasítás SQL utasításokban is használható.
- A CASE utasítás ELSE blokkja tartalmazza azt a szekvenciát, amelyet akkor kell végrehajtani, ha egyik alternatíva sincs kiválasztva.
Szintaxis
CASE (expression) WHEN <value1> THEN action_block1; WHEN <value2> THEN action_block2; WHEN <value3> THEN action_block3; ELSE action_block_default; END CASE;
- A fenti szintaxisban a kifejezés egy bármilyen típusú értéket ad vissza.
- Minden „WHEN” záradék egy alternatíva, amelynek van egy és egy .
- A kifejezésnek megfelelő értékkel rendelkező „WHEN” záradék kerül kiválasztásra, és annak kivégzik.
- Az „ELSE” blokk opcionális, és a következőt tartalmazza: végrehajtásra, ha nincs megfelelő alternatíva.
- Az 'END' a CASE utasítás végét jelöli, és a CASE utasítás kötelező része.
1. példa: Számtani számítás CASE használatával
Ebben a példában egy aritmetikai műveletet végzünk két szám, az 55 és az 5 között.
DECLARE a NUMBER := 55; b NUMBER := 5; arth_operation VARCHAR2(20) := 'MULTIPLY'; BEGIN dbms_output.put_line('Program started.'); CASE (arth_operation) WHEN 'ADD' THEN dbms_output.put_line('Addition of the numbers are: '|| a+b ); WHEN 'SUBTRACT' THEN dbms_output.put_line('Subtraction of the numbers are: '||a-b ); WHEN 'MULTIPLY' THEN dbms_output.put_line('Multiplication of the numbers are: '|| a*b ); WHEN 'DIVIDE' THEN dbms_output.put_line('Division of the numbers are:'|| a/b); ELSE dbms_output.put_line('No operation action defined. Invalid operation'); END CASE; dbms_output.put_line('Program completed.'); END; /
Code Magyarázat
- Code 2. sor: Az 'a' változó deklarálása 'NUMBER'-ként és inicializálása '55' értékkel.
- Code 3. sor: A 'b' változó deklarálása 'NUMBER'-ként és inicializálása '5' értékkel.
- Code 4. sor: Az 'arth_operation' változó deklarálása 20 méretű 'VARCHAR2' változóként, és inicializálása 'MULTIPLY' értékkel.
- Code 6. sor: A „Program elindult” utasítás kinyomtatása.
- Code 7. sor: A CASE ellenőrzi a kifejezés értékét. Itt az 'arth_operation' értéke 'MULTIPLY', amelyet szelektorként kezel.
- Code 10. sor: A 'MULTIPLY' értékű WHEN záradék illeszkedik a szelektorra, így a vezérlő kiválasztja ezt a műveleti blokkot, és a következőt nyomtatja ki: 'A számok szorzása: 275'.
- Code 13. sor: A CASE utasítás végét jelöli.
- Code 14. sor: A „Program befejeződött” utasítás kinyomtatása.
Code teljesítmény
Program started. Multiplication of the numbers are: 275 Program completed.
KERESÉS ESET Nyilatkozata
A keresett CASE utasítás hasonló a CASE utasításhoz, de ahelyett, hogy szelektort használna az alternatíva kiválasztásához, a keresett CASE a WHEN záradékban közvetlenül definiált feltétellel rendelkezik.
- Az első, a feltételnek eleget tevő WHEN záradék végrehajtásra kerül, és a vezérlő kihagyja a fennmaradó alternatívákat.
Szintaxis
CASE WHEN <expression1> THEN action_block1; WHEN <expression2> THEN action_block2; WHEN <expression3> THEN action_block3; ELSE action_block_default; END CASE;
- A fenti szintaxisban minden WHEN záradéknak különálló és .
- A WHEN záradék, amelyre a kifejezés TRUE értéket ad vissza, végrehajtásra kerül.
- Az „ELSE” blokk opcionális, és a következőt tartalmazza: végrehajtásra, ha egyik alternatíva sem teljesül.
- Az 'END' a CASE utasítás végét jelöli, és a CASE utasítás kötelező része.
1. példa: Számtani számítás keresett kis- és nagybetűk használatával
Ebben a példában egy aritmetikai műveletet végzünk két szám, az 55 és az 5 között.
DECLARE a NUMBER := 55; b NUMBER := 5; arth_operation VARCHAR2(20) := 'DIVIDE'; BEGIN dbms_output.put_line('Program started.'); CASE WHEN arth_operation = 'ADD' THEN dbms_output.put_line('Addition of the numbers are: '||a+b ); WHEN arth_operation = 'SUBTRACT' THEN dbms_output.put_line('Subtraction of the numbers are: '|| a-b); WHEN arth_operation = 'MULTIPLY' THEN dbms_output.put_line('Multiplication of the numbers are: '|| a*b ); WHEN arth_operation = 'DIVIDE' THEN dbms_output.put_line('Division of the numbers are: '|| a/b ); ELSE dbms_output.put_line('No operation action defined. Invalid operation'); END CASE; dbms_output.put_line('Program completed.'); END; /
Code Magyarázat
- Code 2. sor: Az 'a' változó deklarálása 'NUMBER'-ként és inicializálása '55' értékkel.
- Code 3. sor: A 'b' változó deklarálása 'NUMBER'-ként és inicializálása '5' értékkel.
- Code 4. sor: Az 'arth_operation' változó deklarálása 20 méretű 'VARCHAR2' változóként, és inicializálása 'DIVIDE' értékkel.
- Code 6. sor: A „Program elindult” utasítás kinyomtatása.
- Code 7. sor: Elkezdődik a keresett CASE utasítás. Az ADD és SUB utasításokhoz tartozó feltételes záradékokTRACA T és a MULTIPLY kimarad, mivel a feltételeik nem egyeznek meg az 'arth_operation' értékével.
- Code 14. sor: A WHEN záradékban szereplő „arth_operation = 'DIVIDE'” kifejezés teljesül, és IGAZ értéket ad vissza.
- Code 15. sor: A WHEN záradék műveleti blokkja végrehajtásra kerül, és a következő jelenik meg: 'A számok osztása: 11'.
- Code 17. sor: A CASE utasítás végét jelöli.
- Code 18. sor: A „Program befejeződött” utasítás kinyomtatása.
Code teljesítmény
Program started. Division of the numbers are: 11 Program completed.
Az eset és a keresett eset összehasonlítása
Mindkét forma egy ágat választ, de az ág kiválasztásának módjában különböznek, az alábbiakban összefoglalva.
| típus | Leírás | Használat |
|---|---|---|
| Esetek | Hasonló a HA-AKKOR-ELSIF utasítás. Logikai kifejezés helyett egy 'szelektor' segítségével választhatjuk ki az alternatívát. | Több alternatíva közüli választásra szolgál egy szelektor segítségével. |
| KERESÉS ESET | Egy CASE utasítás tényleges szelektor nélkül. Ehelyett tartalmazza a feltételt (amely TRUE vagy FALSE értéket ad ki), amely kiválasztja az alternatívát. | Több mint két alternatíva közüli választásra használják, többnyire tartományfeltételekkel. |
