Oracle PL / SQL: Instrucțiune CASE cu exemple

Cuprins:

Anonim

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

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