Co je CASE Statement?
Příkaz CASE je podobný příkazu IF-THEN-ELSIF, který z dostupných možností vybere jednu alternativu na základě podmínky.
- Příkaz CASE používá k výběru sekvence spíše selektor než booleovský výraz.
- Hodnota výrazu v příkazu CASE bude považována za selektor.
- Výraz může být jakéhokoli typu (aritmetický, proměnné atd.)
- Každá alternativa má přiřazenu určitou předdefinovanou hodnotu (selektor) a bude provedena alternativa s hodnotou selektoru, která odpovídá hodnotě podmíněného výrazu.
- Na rozdíl od IF-THEN-ELSIF lze příkaz CASE použít také v příkazech SQL.
- Blok ELSE v příkazu CASE obsahuje sekvenci, kterou je třeba provést, když nebyla vybrána žádná z alternativ.
Syntax:
CASE (expression)WHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- Ve výše uvedené syntaxi vrátí výraz hodnotu, která může být jakéhokoli typu (proměnná, číslo atd.).
- S každou klauzulí „WHEN“ se zachází jako s alternativami, které mají
a . - Bude vybrána klauzule 'WHEN', která odpovídá hodnotě výrazu, a bude provedena odpovídající
. - Blok 'ELSE' je volitelný, který obsahuje
, který je třeba provést, když žádná z alternativ neodpovídá hodnotě výrazu. - „KONEC“ označuje konec příkazu CASE a je povinnou součástí CASE.
Příklad 1: Aritmetický výpočet pomocí Case
V tomto příkladu provedeme aritmetický výpočet mezi dvěma čísly 55 a 5.
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;/
Vysvětlení kódu:
- Řádek kódu 2: Deklarace proměnné „a“ jako datového typu „ČÍSLO“ a inicializace s hodnotou „55“.
- Řádek kódu 3: Deklarace proměnné „b“ jako „ČÍSLO“ datového typu a inicializace s hodnotou „5.“
- Řádek kódu 4: Deklarace proměnné 'arth_operation' jako datového typu 'VARCHAR2' velikosti 20 a inicializace s hodnotou 'MULTIPLY'.
- Řádek kódu 6: Tisk prohlášení „Program spuštěn“.
- Řádek kódu 7: CASE kontroluje hodnotu výrazu. V tomto případě je hodnota proměnné „arth_operation“ „MULTIPLY“. Tato hodnota bude nyní považována za selektor pro tento příkaz CASE.
- Řádek kódu 10: Klauzule WHEN s hodnotou 'MULTIPLY' se shoduje s hodnotou selektoru, proto ovladač vybere tento action_block a vytiskne zprávu 'Násobení čísel je: 275'.
- Řádek kódu 13: Označí konec příkazu CASE.
- Řádek kódu 14: Tisk prohlášení „Program dokončen“.
Výstup kódu:
Program started.Multiplication of the numbers are: 275Program completed.
Prohlášení VYHLEDANÉ PŘÍPADY
Příkaz SEARCHED CASE je podobný příkazu CASE, místo použití alternativního selektoru bude mít SEARCHED CASE výraz definovaný v klauzuli WHEN.
- Bude provedena první klauzule WHEN, která splňuje podmínku, a řadič přeskočí zbývající alternativy.
Syntax:
CASEWHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- Ve výše uvedené syntaxi má každá klauzule WHEN samostatné
a . - Bude provedena klauzule WHEN, pro kterou výraz vrací TRUE.
- Blok 'ELSE' je volitelný, který obsahuje
, který je třeba provést, když žádná z alternativ nevyhovuje. - „KONEC“ označuje konec příkazu CASE a je povinnou součástí CASE.
Příklad 1: Aritmetický výpočet pomocí prohledaného případu
V tomto příkladu provedeme aritmetický výpočet mezi dvěma čísly 55 a 5.
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;/
Vysvětlení kódu:
- Řádek kódu 2: Deklarace proměnné „a“ jako datového typu „ČÍSLO“ a inicializace s hodnotou „55“.
- Řádek kódu 3: Deklarace proměnné 'b' jako datového typu 'NUMBER' a inicializace s hodnotou '5'.
- Řádek kódu 4: Deklarace proměnné „arth_operation“ jako datového typu „VARCHAR2“ velikosti 20 a inicializace s hodnotou „DIVIDE“.
- Řádek kódu 6: Tisk prohlášení „Program spuštěn“.
- Řádek kódu 7: Začíná příkaz SEARCHED CASE. Kód z řádku 8 do řádku 13 je přeskočen, protože jejich hodnota selektoru (ADD, SUBTRACT, MULTIPLY) neodpovídá hodnotě 'arth_operation'.
- Řádek kódu 14: Výraz klauzule WHEN "arth_operation = 'DIVIDE'" je spokojen a výraz vrátí hodnotu PRAVDA.
- Řádek kódu 15: Action_block klauzule WHEN bude proveden a vytiskne se zpráva „Rozdělení čísel: 11“.
- Řádek kódu 17: Označuje konec výpisu CASE.
- Řádek kódu 18: Tisk prohlášení „Program dokončen“.
Výstup kódu:
Program started.Division of the numbers are: 11Program completed.
souhrn
TYP | POPIS | POUŽÍVÁNÍ |
---|---|---|
PŘÍPAD |
Podobně jako prohlášení IF-THEN-ELSIF. 'SELECTOR' se používá k výběru alternativ místo booleovského výrazu. |
Používá se k výběru z několika alternativ pomocí 'SELECTOR' |
VYHLEDANÝ PŘÍPAD |
Příkaz CASE bez skutečného 'SELECTOR'. Místo toho obsahuje skutečnou podmínku (která se vyhodnotí na TRUE / FALSE), která vybere alternativy. |
Používá se většinou k výběru z více než dvou alternativ. |