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ó opciók közül.
- A CASE utasítás "szelektor" -ot használ egy logikai kifejezés helyett a szekvencia kiválasztásához.
- A CASE utasításban szereplő kifejezés értékét választóként kezeljük.
- A kifejezés bármilyen típusú lehet (számtani, változók stb.)
- Minden alternatívához egy előre meghatározott értéket (választót) rendelünk, és a feltételes kifejezés értékének megfelelő választó értékkel rendelkező alternatívát végrehajtják.
- Az IF-THEN-ELSIF-től eltérően a CASE utasítás SQL-utasításokban is használható.
- Az ELSE blokk a CASE utasításban azt a sorrendet tartalmazza, amelyet végre kell hajtani, ha egyik alternatívát sem választották ki.
Szintaxis:
CASE (expression)WHENTHEN action_blockl;WHEN THEN action_block2;WHEN 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 <értéke> és
van. - Kiválasztásra kerül a WHEN záradék, amely megegyezik a kifejezés értékével, és a megfelelő
végrehajtásra kerül. - Az 'ELSE' blokk opcionális, amely az
értéket tartalmazza, amelyet akkor kell végrehajtani, ha egyik alternatíva sem felel meg a kifejezés értékének. - Az „END” jelöli a CASE utasítás végét, és ez a CASE kötelező része.
1. példa: Számtani számítás Case használatával
Ebben a példában számtani számítást fogunk végezni két 55 és 5 szám között.
DECLAREa NUMBER :=55;b NUMBER :=5;arth_operation VARCHAR2(20) :='MULTIPLY’;BEGINdbms_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ó deklarálása „NUMBER” típusú adattípusként és inicializálása „55” értékkel.
- 3. kódsor: A „b” változó deklarálása „NUMBER” típusú adattípusként és inicializálása „5” értékkel
- 4. kódsor: Az „arth_operation” változó deklarálása „VARCHAR2” 20-as típusú adattípusként és inicializálás „MULTIPLY” értékkel.
- 6. kódsor: A "Program elindult" 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 most a CASE utasítás kijelölőjeként kezeljük.
- 10. kódsor: A „MULTIPLY” értékű WHEN záradék egyezik a választó értékével, ezért a vezérlő kiválasztja ezt a action_block-ot, és kinyomtatja a „A számok szorzása: 275” üzenetet.
- 13. kódsor: A CASE utasítás végét jelöli.
- Kódsor14: A "Program befejezve" utasítás nyomtatása.
Kód kimenet:
Program started.Multiplication of the numbers are: 275Program completed.
KERESETT ESET kimutatás
A SEARCHED CASE utasítás hasonló a CASE utasításhoz, ahelyett, hogy a választó segítségével választaná ki az alternatívát, a SEARCHED CASE közvetlenül a WHEN záradékban definiált kifejezést kapja.
- Az első WHEN záradék, amely kielégíti a feltételt, végrehajtásra kerül, és a vezérlő kihagyja a többi alternatívát.
Szintaxis:
CASEWHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- A fenti szintaxisban az egyes WHEN-záradékoknak külön vannak az
és az elemek. - A WHEN záradék, amelyre a kifejezés az IGAZ értéket adja vissza, végrehajtásra kerül.
- Az 'ELSE' blokk opcionális, amely megtartja az
értéket, amelyet akkor kell végrehajtani, ha egyik alternatíva sem teljesül. - Az „END” jelöli a CASE utasítás végét, és ez a CASE kötelező része.
1. példa: Számtani számítás a keresett eset felhasználásával
Ebben a példában számtani számítást fogunk végezni két 55 és 5 szám között.
DECLARE a NUMBER :=55;b NUMBER :=5;arth_operation VARCHAR2(20) :='DIVIDE';BEGINdbms_output.put_line(‘Program started.' );CASEWHEN 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ó deklarálása „NUMBER” típusú adattípusként és inicializálása „55” értékkel.
- 3. kódsor: A „b” változó deklarálása „NUMBER” típusú adattípusként és inicializálása „5” értékkel.
- 4. kódsor: Az „arth_operation” változó deklarálása „VARCHAR2” adattípusnak, 20-as méret, és inicializálás „DIVIDE” értékkel.
- 6. kódsor: A "Program elindult" utasítás kinyomtatása.
- 7. kódsor: A KERESETT ESET utasítás megkezdődik. A 8. sor és a 13. sor közötti kód átugrásra kerül, mivel a kiválasztó értékük (ADD, SUBTRACT, MULTIPLY) nem egyezik az 'arth_operation' értékével.
- 14. kódsor: A WHEN záradékkifejezés "arth_operation = 'DIVIDE" "teljesül, és a kifejezés IGAZ-ot ad vissza.
- 15. kódsor: A WHEN záradék Action_block-ja végrehajtásra kerül, és a „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 befejezve" utasítás nyomtatása.
Kód kimenet:
Program started.Division of the numbers are: 11Program completed.
Összegzés
TÍPUS | LEÍRÁS | HASZNÁLAT |
---|---|---|
ÜGY |
Hasonló az IF-THEN-ELSIF állításhoz. A logikai kifejezés helyett az 'alternatíva kiválasztására' SELECTOR 'jelölést használnak. |
Számos alternatíva közül választhat a 'SELECTOR' segítségével |
KERESETT ESET |
CASE utasítás tényleges 'SELECTOR' nélkül. Ehelyett tartalmazza a tényleges feltételt (amely IGAZ / HAMIS értéket ad), amely kiválasztja az alternatívákat. |
Több mint két alternatíva közül választhat. |