CASE nyilatkozat be Oracle PL/SQL példákkal
Mi az a CASE nyilatkozat?
A CASE utasítás hasonló az IF-THEN-ELSIF utasításhoz, amely a feltétel alapján választ egy alternatívát a rendelkezésre álló lehetőségek közül.
- A CASE utasítás a „selector”-t használja logikai kifejezés helyett a sorozat kiválasztásához.
- A CASE utasításban lévő kifejezés értéke választóként lesz kezelve.
- A kifejezés bármilyen típusú lehet (számítás, változó stb.)
- Minden alternatívához egy bizonyos előre definiált érték (szelektor) van hozzárendelve, és a feltételes kifejezés értékének megfelelő szelektor értékkel rendelkező alternatíva kerül végrehajtásra.
- 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 végre kell hajtani, ha egyik alternatíva sem lett kiválasztva.
Szintaxis
CASE (expression) WHEN <valuel> THEN action_blockl; WHEN <value2> THEN action_block2; WHEN <value3> THEN action_block3; ELSE action_block_default; END CASE;
- A fenti szintaxisban a kifejezés olyan értéket ad vissza, amely bármilyen típusú lehet (változó, szám stb.).
- Minden „WHEN” záradékot alternatívaként kezelünk, amelyeknek van és .
- A „WHEN” záradék, amely megegyezik a kifejezés értékével, és a megfelelő ki fogják végezni.
- Az 'ELSE' blokk nem kötelező, amely tartalmazza a amelyet akkor kell végrehajtani, ha egyik alternatíva sem egyezik a kifejezés értékével.
- Az 'END' a CASE utasítás végét jelzi, és a CASE kötelező része.
Példa 1: Aritmetikai számítás az eset használatával
Ebben a példában két szám 55 és 5 között fogunk számtani számításokat végezni.
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; /
Kód Magyarázat
- 2. kódsor: Az 'a' változó 'NUMBER' adattípusként való deklarálása és inicializálása '55' értékkel.
- 3. kódsor: A 'b' változó 'NUMBER' adattípusként való deklarálása és inicializálása '5' értékkel.
- 4. kódsor: Az 'arth_operation' változó 2-as méretű 'VARCHAR20' adattípusként való deklarálása és 'MULTIPLY' értékkel történő inicializálása.
- 6. kódsor: A „Program indulva” utasítás kinyomtatása.
- 7. kódsor: A CASE ellenőrzi a kifejezés értékét. Ebben az esetben az 'arth_operation' változó értéke 'MULTIPLY'. Ezt az értéket a rendszer most a CASE utasítás választójaként kezeli.
- 10. kódsor: A 'SZORZAT' értékű WHEN záradék megegyezik a választó értékével, ezért a vezérlő kiválasztja ezt az action_blockot, és kiírja a "Számok szorzása: 275" üzenetet.
- 13-as kódsor: A CASE utasítás végét jelöli.
- 14-es kódsor: „A program befejezve” kiírás kinyomtatása.
Kód kimenet
Program started. Multiplication of the numbers are: 275 Program completed.
KERESÉS ESET Nyilatkozata
A SEARCHED CASE utasítás hasonló a CASE utasításhoz, ahelyett, hogy a választót használná az alternatíva kiválasztásához, a SEARCHED CASE közvetlenül a WHEN záradékban meghatározott kifejezéssel rendelkezik.
- A feltételnek megfelelő első WHEN záradék végrehajtásra kerül, és a vezérlő kihagyja a többi alternatívát.
Szintaxis
CASE WHEN <expression1> THEN action_blockl; WHEN <expression2> THEN action_block2; WHEN <expression3> THEN action_block3; ELSE action_block_default; END CASE;
- A fenti szintaxisban minden WHEN tagmondat különálló és .
- A WHEN záradék, amelyre a kifejezés IGAZ értéket ad vissza, végrehajtásra kerül.
- Az 'ELSE' blokk nem kötelező, amely tartalmazza a amelyet akkor kell végrehajtani, ha egyik alternatíva sem kielégítő.
- Az 'END' a CASE utasítás végét jelzi, és a CASE kötelező része.
Példa 1: Aritmetikai számítás a keresett eset használatával
Ebben a példában két szám 55 és 5 között fogunk számtani számításokat végezni.
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; /
Kód Magyarázat
- 2. kódsor: Az 'a' változó 'NUMBER' adattípusként való deklarálása és inicializálása '55' értékkel.
- 3. kódsor: A 'b' változó 'NUMBER' adattípusként való deklarálása és inicializálása '5' értékkel.
- 4. kódsor: Az „arth_operation” változó 2-as méretű „VARCHAR20” adattípusként való deklarálása és „DIVIDE” értékkel történő inicializálása.
- 6. kódsor: A „Program indulva” utasítás kinyomtatása.
- 7. kódsor: SEARCHED CASE utasítás kezdődik. A 8. sortól a 13. sorig terjedő kód kimarad, mivel a választó értéke (ADD, KIVONÁS, SZORZÁS) nem egyezik az 'arth_operation' értékével.
- 14. kódsor: Az „arth_operation = 'DIVIDE'” WHEN záradékkifejezés teljesül, és a kifejezés TRUE-t ad vissza.
- 15. kódsor: A WHEN záradék Action_blokkja végrehajtásra kerül, és a „Számok felosztása: 11” üzenet kerül kinyomtatásra.
- 17. kódsor: A CASE utasítás végét jelöli.
- 18. kódsor: „A program befejeződött” nyilatkozat kinyomtatása.
Kód kimenet
Program started. Division of the numbers are: 11 Program completed.
Összegzésként
TYPE | LEÍRÁS | HASZNÁLAT |
---|---|---|
CASE | Hasonló a HA-AKKOR-ELSIF nyilatkozat. A 'SELECTOR' a logikai kifejezés helyett az alternatívák kiválasztására szolgál. | Számos alternatíva közül választhat a 'SELECTOR' segítségével |
KERESÉS ESET | CASE utasítás tényleges „SELECTOR” nélkül. Ehelyett tartalmazza a tényleges feltételt (amely kiértékelése IGAZ/HAMIS), amely kiválasztja az alternatívákat. | Általában kettőnél több alternatíva közül lehet választani. |