Čo je to CASE Statement?
Príkaz CASE je podobný príkazu IF-THEN-ELSIF, ktorý z dostupných možností vyberie jednu alternatívu na základe podmienky.
- Príkaz CASE na výber sekvencie používa skôr selektor ako logický výraz.
- Hodnota výrazu vo výkaze CASE sa bude považovať za selektor.
- Výraz môže byť ľubovoľného typu (aritmetický, premenné atď.)
- Každá alternatíva má priradenú určitú preddefinovanú hodnotu (selektor) a bude vykonaná alternatíva s hodnotou selektora, ktorá sa zhoduje s hodnotou podmieneného výrazu.
- Na rozdiel od IF-THEN-ELSIF možno príkaz CASE použiť aj v príkazoch SQL.
- Blok ELSE v príkaze CASE obsahuje postupnosť, ktorú je potrebné vykonať, keď nie je vybratá žiadna z alternatív.
Syntax:
CASE (expression)WHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- Vo vyššie uvedenej syntaxi vráti výraz hodnotu, ktorá môže byť ľubovoľného typu (premenná, počet atď.).
- S každou klauzulou „WHEN“ sa zaobchádza ako s alternatívami, ktoré majú hodnoty
a . - Bude vybraná klauzula „WHEN“, ktorá sa zhoduje s hodnotou výrazu, a vykoná sa zodpovedajúca
. - Blok 'ELSE' je voliteľný, ktorý obsahuje
, ktorý je potrebné vykonať, keď sa žiadna z alternatív nezhoduje s hodnotou výrazu. - „KONIEC“ označuje koniec vyhlásenia CASE a je povinnou súčasťou CASE.
Príklad 1: Aritmetický výpočet pomocou prípadu
V tomto príklade urobíme aritmetický výpočet medzi dvoma číslami 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;/
Vysvetlenie kódu:
- Riadok kódu 2: Deklarácia premennej „a“ ako dátového typu „NUMBER“ a jej inicializácia s hodnotou „55“.
- Riadok kódu 3: Deklarácia premennej „b“ ako dátového typu „NUMBER“ a jej inicializácia s hodnotou „5.“
- Riadok kódu 4: Deklarovanie premennej „arth_operation“ ako dátového typu „VARCHAR2“ veľkosti 20 a jej inicializácia hodnotou „MULTIPLY“.
- Riadok kódu 6: Tlač vyhlásenia „Program spustený“.
- Riadok kódu 7: CASE kontroluje hodnotu výrazu. V tomto prípade je hodnota premennej „arth_operation“ „MULTIPLY“. Táto hodnota sa teraz bude považovať za selektor pre tento príkaz CASE.
- Riadok kódu 10: Klauzula WHEN s hodnotou „MULTIPLY“ sa zhoduje s hodnotou selektora, preto kontrolór vyberie tento action_block a vytlačí správu „Násobenie čísel je: 275“.
- Riadok kódu 13: Označí koniec výpisu CASE.
- Riadok kódu14: Tlač vyhlásenia „Program je dokončený“.
Výstup kódu:
Program started.Multiplication of the numbers are: 275Program completed.
Vyhlásenie VYHĽADANÉHO PRÍPADU
Príkaz SEARCHED CASE je podobný príkazu CASE, namiesto použitia selektora na výber alternatívy bude mať SEARCHED CASE výraz definovaný v klauzule WHEN.
- Bude vykonaná prvá klauzula WHEN, ktorá spĺňa podmienku, a radič preskočí zvyšné alternatívy.
Syntax:
CASEWHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- Vo vyššie uvedenej syntaxi má každá klauzula WHEN samostatné znaky
a . - Bude vykonaná klauzula WHEN, pre ktorú výraz vráti hodnotu TRUE.
- Blok 'ELSE' je voliteľný, ktorý obsahuje
, ktorý je potrebné vykonať, keď nevyhovuje žiadna z alternatív. - „KONIEC“ označuje koniec vyhlásenia CASE a je povinnou súčasťou CASE.
Príklad 1: Aritmetický výpočet pomocou hľadaného prípadu
V tomto príklade urobíme aritmetický výpočet medzi dvoma číslami 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;/
Vysvetlenie kódu:
- Riadok kódu 2: Deklarácia premennej „a“ ako dátového typu „NUMBER“ a jej inicializácia s hodnotou „55“.
- Riadok kódu 3: Deklarácia premennej „b“ ako dátového typu „NUMBER“ a jej inicializácia s hodnotou „5“.
- Riadok kódu 4: Deklarovanie premennej „arth_operation“ ako dátového typu „VARCHAR2“ veľkosti 20 a jej inicializácia hodnotou „DIVIDE“.
- Riadok kódu 6: Tlač vyhlásenia „Program spustený“.
- Riadok kódu 7: Začína sa výpis VYHĽADÁVANÝCH PRÍPADOV. Kód z riadku 8 do riadku 13 sa preskočí, pretože ich hodnota selektora (ADD, SUBTRACT, MULTIPLY) sa nezhoduje s hodnotou „arth_operation“.
- Riadok kódu 14: Výraz klauzule WHEN "arth_operation = 'DIVIDE'" je spokojný a výraz vráti hodnotu TRUE.
- Riadok kódu 15: Action_block klauzuly WHEN bude vykonaný a vytlačí sa správa „Rozdelenie čísel: 11“.
- Riadok kódu 17: Označí koniec výpisu CASE.
- Riadok kódu 18: Vytlačenie vyhlásenia „Program je dokončený“.
Výstup kódu:
Program started.Division of the numbers are: 11Program completed.
Zhrnutie
TYP | POPIS | POUŽITIE |
---|---|---|
PRÍPAD |
Podobné vyhláseniu IF-THEN-ELSIF. Na výber alternatív namiesto boolovského výrazu sa používa 'SELECTOR'. |
Používa sa na výber z niekoľkých alternatív pomocou nástroja „SELECTOR“. |
HĽADANÝ PRÍPAD |
Príkaz CASE bez skutočného výrazu „SELECTOR“. Namiesto toho obsahuje skutočnú podmienku (ktorá sa vyhodnotí ako TRUE / FALSE), ktorá vyberie alternatívy. |
Používa sa väčšinou na výber z viac ako dvoch alternatív. |