Ce este declarația CASE?
O declarație CASE este similară cu declarația IF-THEN-ELSIF care selectează o alternativă pe baza condiției din opțiunile disponibile.
- Instrucțiunea 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 ar putea fi de orice tip (aritmetică, variabile etc.)
- Fiecare alternativă este atribuită cu o anumită valoare predefinită (selector), iar alternativa cu valoare selector care se potrivește cu valoarea expresiei condiționate va fi executată.
- Spre deosebire de IF-THEN-ELSIF, instrucțiunea CASE poate fi utilizată și în instrucțiunile SQL.
- Blocul ELSE din instrucțiunea CASE conține secvența care trebuie executată atunci când niciuna dintre alternative nu a fost selectată.
Sintaxă:
CASE (expression)WHENTHEN action_blockl;WHEN THEN action_block2;WHEN 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 cea a expresiei și se va executa
corespunzător. - Blocul „ELSE” este opțional, care deține
care trebuie executat atunci când niciuna dintre alternative nu se potrivește cu valoarea expresiei. - „END” marchează sfârșitul declarației CASE și este o parte obligatorie a CASE.
Exemplul 1: Calcul aritmetic folosind Case
În acest exemplu, vom face calculul aritmetic între două numere 55 și 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;/
Explicatie cod:
- 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 „VARCHAR2” tip de date de dimensiunea 20 și inițializarea acesteia cu valoarea „MULTIPLY”.
- Linia de cod 6: Tipărirea declarației „Programul a început”.
- Linia de cod 7: CASE verifică valoarea expresiei. În acest caz, valoarea variabilei „arth_operation” este „MULTIPLICARE”. Această valoare va fi tratată acum ca un selector pentru această instrucțiune CASE.
- 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 imprima mesajul „Multiplicarea numerelor sunt: 275”.
- Linia de cod 13: marchează sfârșitul declarației CASE.
- Linia de cod 14: Tipărirea declarației „Program finalizat”.
Ieșire cod:
Program started.Multiplication of the numbers are: 275Program completed.
Declarație de caz căutat
Instrucțiunea SEARCHED CASE este similară cu instrucțiunea CASE, mai degrabă decât folosind selectorul pentru a selecta alternativa, SEARCHED CASE va avea direct expresia definită în clauza WHEN.
- Prima clauză WHEN care îndeplinește condiția va fi executată, iar controlerul va sări peste alternativele rămase.
Sintaxă:
CASEWHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- În sintaxa de mai sus, fiecare clauză WHEN are
și separate. - Clauza WHEN pentru care expresia returnează TRUE va fi executată.
- Blocul „ELSE” este opțional, care deține
care trebuie executat atunci când niciuna dintre alternative nu satisface. - „END” marchează sfârșitul declarației CASE și este o parte obligatorie a CASE.
Exemplul 1: Calcul aritmetic folosind caz căutat
În acest exemplu, vom face calculul aritmetic între două numere 55 și 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;/
Explicatie cod:
- 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 „VARCHAR2” tip de date de dimensiunea 20 și inițializarea acesteia cu valoarea „DIVIDE”.
- Linia de cod 6: Tipărirea declarației „Programul a început”.
- Linia de cod 7: începe instrucțiunea SEARCHED CASE. Codul de la linia 8 la linia 13 este omis, deoarece valoarea selectorului lor (ADAUGĂ, SUBTRACT, MULTIPLICARE) nu se potrivește cu valoarea „arth_operation”.
- Linia de cod 14: Expresia clauzei WHEN "arth_operation = 'DIVIDE'" satisfăcută și expresia returnează TRUE.
- Linia de cod 15: Action_block al clauzei WHEN va fi executată și va fi tipărit mesajul „Împărțirea numerelor sunt: 11”.
- Linia de cod 17: marchează sfârșitul declarației CASE.
- Linia de cod 18: Tipărirea declarației „Program finalizat”.
Ieșire cod:
Program started.Division of the numbers are: 11Program completed.
rezumat
TIP | DESCRIERE | UTILIZARE |
---|---|---|
CAZ |
Similar cu declarația IF-THEN-ELSIF. Un „SELECTOR” este utilizat pentru a alege alternativele în loc de expresia booleană. |
Folosit pentru a selecta dintre mai multe alternative folosind „SELECTOR” |
CAZ CAUTAT |
Declarație CASE fără „SELECTOR” real. În schimb, conține starea reală (care se evaluează la TRUE / FALSE) care va selecta alternativele. |
Obișnuiam să alegem mai mult de două alternative. |