Oracle PL / SQL: Izjava CASE s primeri

Kazalo:

Anonim

Kaj je izjava CASE?

Stavek CASE je podoben stavku IF-THEN-ELSIF, ki med razpoložljivimi možnostmi izbere eno možnost na podlagi pogoja.

  • Stavek CASE za izbiro zaporedja uporablja namesto logičnega izraza "selector".
  • Vrednost izraza v stavku CASE bo obravnavana kot izbirnik.
  • Izraz je lahko katere koli vrste (aritmetika, spremenljivke itd.)
  • Vsaka možnost je dodeljena z določeno vnaprej določeno vrednostjo (izbirnik) in izvedena bo možnost z vrednostjo izbirnika, ki ustreza vrednosti pogojnega izraza.
  • Za razliko od IF-THEN-ELSIF se lahko stavek CASE uporablja tudi v stavkih SQL.
  • Blok ELSE v stavku CASE vsebuje zaporedje, ki ga je treba izvesti, ko ni izbrana nobena od možnosti.

Sintaksa:

CASE (expression)WHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • V zgornji sintaksi bo izraz vrnil vrednost, ki je lahko katere koli vrste (spremenljivka, število itd.).
  • Vsaka klavzula 'WHEN' se obravnava kot alternativi, ki imata in .
  • Izbrana bo klavzula 'WHEN', ki se ujema z vrednostjo izraza, in izveden bo ustrezen .
  • Blok 'ELSE' ni obvezen in vsebuje , ki ga je treba izvesti, če se nobena od alternativ ne ujema z vrednostjo izraza.
  • 'END' označuje konec stavka CASE in je obvezen del CASE.

Primer 1: Aritmetični izračun z uporabo črke

V tem primeru bomo opravili aritmetični izračun med dvema številkama 55 in 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;/

Razlaga kode:

  • Vrstica kode 2: Spremenljivka 'a' se razglasi za podatkovni tip 'ŠTEVILO' in se inicializira z vrednostjo '55'.
  • Vrstica kode 3: Spremenljivka 'b' se razglasi za podatkovni tip 'ŠTEVILO' in se inicializira z vrednostjo '5.'
  • Vrstica kode 4: Deklariranje spremenljivke 'arth_operation' kot podatkovnega tipa 'VARCHAR2' velikosti 20 in inicializacija z vrednostjo 'MULTIPLY'.
  • 6. vrstica kode: Tiskanje stavka "Program se je začel".
  • Vrstica kode 7: CASE preveri vrednost izraza. V tem primeru je vrednost spremenljivke "arth_operation" "MULTIPLY". Ta vrednost bo zdaj obravnavana kot izbirnik za ta stavek CASE.
  • Vrstica kode 10: Stavek WHEN z vrednostjo 'MULTIPLY' se ujema z vrednostjo izbirnika, zato bo krmilnik izbral ta blok_akcij in natisnil sporočilo 'Množenje številk je: 275'.
  • Koda vrstica 13: Označi konec stavka CASE.
  • Vrstica kode 14: Tiskanje stavka "Program zaključen".

Izhod kode:

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

Izjava o iskanem primeru

Stavek SEARCHED CASE je podoben stavku CASE, namesto da bi s pomočjo izbirnika izbral alternativo, bo SEARCHED CASE izraz neposredno opredeljen v stavku WHEN.

  • Izvede se prva klavzula WHEN, ki izpolnjuje pogoj, krmilnik pa preskoči preostale možnosti.

Sintaksa:

CASEWHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • V zgornji sintaksi ima vsak stavek WHEN ločena in .
  • Izvede se stavek WHEN, za katerega izraz vrne TRUE.
  • Blok 'ELSE' je neobvezen, ki vsebuje , ki ga je treba izvesti, če nobena od alternativ ne ustreza.
  • 'END' označuje konec stavka CASE in je obvezen del CASE.

Primer 1: Aritmetični izračun z uporabo iskanega primera

V tem primeru bomo opravili aritmetični izračun med dvema številkama 55 in 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;/

Razlaga kode:

  • Vrstica kode 2: Spremenljivka 'a' se razglasi za podatkovni tip 'ŠTEVILO' in se inicializira z vrednostjo '55'.
  • Vrstica kode 3: Spremenljivka 'b' se razglasi za podatkovni tip 'ŠTEVILO' in se inicializira z vrednostjo '5'.
  • Vrstica kode 4: Spremenljivka 'arth_operation' se razglasi za podatkovni tip 'VARCHAR2' velikosti 20 in jo inicializira z vrednostjo 'DIVIDE'.
  • 6. vrstica kode: Tiskanje stavka "Program se je začel".
  • Vrstica kode 7: Začne se stavek SEARCHED CASE. Koda od vrstice 8 do vrstice 13 se preskoči, saj se njihova vrednost izbirnika (DODAJ, ODSTRANI, VEČ) ne ujema z vrednostjo 'arth_operation'.
  • Vrstica kode 14: Izraz stavka WHEN "arth_operation = 'DIVIDE'" je zadovoljen in izraz vrne TRUE.
  • Vrstica kode 15: Izvede se Action_block klavzule WHEN in natisne se sporočilo »Delitev številk je: 11«.
  • Vrstica kode 17: Označi konec stavka CASE.
  • Vrstica kode 18: Tiskanje stavka "Program zaključen".

Izhod kode:

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

Povzetek

TIP OPIS UPORABA

OVITEK

Podobno kot izjava IF-THEN-ELSIF. 'SELECTOR' se uporablja za izbiro možnosti namesto logičnega izraza.

Uporablja se za izbiro med več možnostmi z uporabo 'SELECTOR'

ISKANI ZADEV

Stavek CASE brez dejanskega 'SELECTOR'. Namesto tega vsebuje dejansko stanje (ki se izračuna na TRUE / FALSE), ki bo izbralo alternative.

Včasih so izbirali med več kot dvema alternativama.