Declarație CASE în Oracle PL/SQL cu exemple

Ce este declarația CASE?

O instrucțiune CASE este similară cu instrucțiunea IF-THEN-ELSIF care selectează o alternativă pe baza condiției dintre opțiunile disponibile.

  • Declarația CASE folosește „selector” mai degrabă decât o expresie booleană pentru a alege secvența.
  • Valoarea expresiei din instrucțiunea CASE va fi tratată ca un selector.
  • Expresia poate fi de orice tip (aritmetică, variabile etc.)
  • Fiecărei alternative i se atribuie o anumită valoare predefinită (selector), iar alternativa cu valoarea selectorului care se potrivește cu valoarea expresiei condiționate va fi executată.
  • Spre deosebire de IF-THEN-ELSIF, instrucțiunea CASE poate fi folosită și în instrucțiuni SQL.
  • Blocul ELSE din instrucțiunea CASE deține secvența care trebuie executată atunci când niciuna dintre alternative nu a fost selectată.

Sintaxă

CASE (expression)
 WHEN <valuel> THEN action_blockl;
 WHEN <value2> THEN action_block2;
 WHEN <value3> THEN action_block3;
 ELSE action_block_default;
END CASE;
  • În sintaxa de mai sus, expresia va returna o valoare care ar putea fi de orice tip (variabilă, număr etc.).
  • Fiecare clauză „WHEN” este tratată ca o alternativă care are și .
  • Va fi selectată clauza „WHEN” care se potrivește cu valoarea expresiei și cea corespunzătoare va fi executat.
  • Blocul „ELSE” este opțional, care ține care trebuie executat atunci când niciuna dintre alternative nu se potrivește cu valoarea expresiei.
  • „END” marchează sfârșitul instrucțiunii CASE și este o parte obligatorie a CASE.

Exemplu 1: Calcul aritmetic folosind case

În acest exemplu, vom face calcule aritmetice între două numere 55 și 5.

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;
/

Explicarea codului

  • Linia de cod 2: Declararea variabilei „a” ca tip de date „NUMĂR” și inițializarea acesteia cu valoarea „55”.
  • Linia de cod 3: Declararea variabilei „b” ca tip de date „NUMĂR” și inițializarea acesteia cu valoarea „5”.
  • Linia de cod 4: Declararea variabilei „arth_operation” ca tip de date „VARCHAR2” de dimensiunea 20 și inițializarea acesteia cu valoarea „MULTIPLY”.
  • Linia de cod 6: Se imprimă declarația „Programul început”.
  • Linia de cod 7: CASE verifică valoarea expresiei. În acest caz, valoarea variabilei „arth_operation” este „MULTIPLY”. Această valoare va fi tratată ca un selector pentru această instrucțiune CASE acum.
  • Linia de cod 10: Clauza WHEN cu valoarea „MULTIPLY” se potrivește cu valoarea selectorului, prin urmare controlerul va selecta acest action_block și va tipări mesajul „Multiplicarea numerelor sunt: ​​275”.
  • Linia de cod 13: marchează sfârșitul instrucțiunii CASE.
  • Linia de cod 14: Se imprimă declarația „Program finalizat”.

Ieșire cod

Program started.
Multiplication of the numbers are: 275
Program completed.

Declarația CAZUL CĂUTAT

Instrucțiunea SEARCHED CASE este similară cu instrucțiunea CASE, mai degrabă decât utilizarea selectorului pentru a selecta alternativa, SEARCHED CASE va avea direct expresia definită în clauza WHEN.

  • Prima clauză WHEN care satisface condiția va fi executată, iar controlorul va sări peste alternativele rămase.

Sintaxă

CASE
WHEN <expression1> THEN action_blockl; 
WHEN <expression2> THEN action_block2; 
WHEN <expression3> THEN action_block3; 
ELSE action_block_default;
END CASE;
  • În sintaxa de mai sus, fiecare clauză WHEN are o clauză separată și .
  • Va fi executată clauza WHEN pentru care expresia returnează TRUE.
  • Blocul „ELSE” este opțional, care ține care trebuie executat atunci când nici una dintre alternative nu satisface.
  • „END” marchează sfârșitul instrucțiunii CASE și este o parte obligatorie a CASE.

Exemplu 1: Calcul aritmetic folosind caz căutat

În acest exemplu, vom face calcule aritmetice între două numere 55 și 5.

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;
/

Explicarea codului

  • Linia de cod 2: Declararea variabilei „a” ca tip de date „NUMĂR” și inițializarea acesteia cu valoarea „55”.
  • Linia de cod 3: Declararea variabilei „b” ca tip de date „NUMĂR” și inițializarea acesteia cu valoarea „5”.
  • Linia de cod 4: Declararea variabilei „arth_operation” ca tip de date „VARCHAR2” de dimensiunea 20 și inițializarea acesteia cu valoarea „DIVIDE”.
  • Linia de cod 6: Se imprimă declarația „Programul început”.
  • Linia de cod 7: începe instrucțiunea SEARCHED CASE. Codul de la linia 8 la linia 13 este omis deoarece valoarea selectorului (ADD, SUBTRACT, MULTIPLY) nu se potrivește cu valoarea „arth_operation”.
  • Linia de cod 14: expresia clauzei WHEN „arth_operation = „DIVIDE”” este satisfăcută și expresia returnează TRUE.
  • Linia de cod 15: Action_block a clauzei WHEN va fi executată și mesajul „Diviziunea numerelor sunt: ​​11” va fi tipărit.
  • Linia de cod 17: marchează sfârșitul instrucțiunii CASE.
  • Linia de cod 18: Tipărirea mențiunii „Program finalizat”.

Ieșire cod

Program started.
Division of the numbers are: 11
Program completed.

Rezumat

TIP DESCRIERE UTILIZARE
CASE similar DACĂ-Atunci-ELSIF afirmație. Un „SELECTOR” este folosit pentru a alege alternativele în locul expresiei booleene. Folosit pentru a selecta dintre mai multe alternative folosind „SELECTOR”
CAZ CĂUTAT Declarație CASE fără „SELECTOR” real. În schimb, conține condiția actuală (care se evaluează la TRUE/FALSE) care va selecta alternativele. Obișnuit să alegi dintre mai mult de două alternative, în principal.