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)WHENTHEN 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:
CASEWHENTHEN 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. |