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