Oracle PL / SQL: Prípad CASE s príkladmi

Obsah:

Anonim

Č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)WHEN  THEN 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:

CASEWHEN  THEN 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.