Što je CASE izjava?
Izjava CASE slična je izjavi IF-THEN-ELSIF koja odabire jednu alternativu na temelju stanja iz dostupnih opcija.
- Izraz CASE koristi "selektor", a ne logički izraz za odabir slijeda.
- Vrijednost izraza u CASE izrazu tretirat će se kao selektor.
- Izraz može biti bilo koje vrste (aritmetika, varijable itd.)
- Svaka alternativa dodjeljuje se određenoj unaprijed definiranoj vrijednosti (selektor), a alternativa s vrijednošću selektora koja odgovara vrijednosti uvjetnog izraza bit će izvršena.
- Za razliku od IF-THEN-ELSIF, CASE izraz također se može koristiti u SQL izrazima.
- ELSE blok u CASE izrazu sadrži slijed koji treba izvršiti kada nije odabrana nijedna od alternativa.
Sintaksa:
CASE (expression)WHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- U gornjoj sintaksi izraz će vratiti vrijednost koja može biti bilo koje vrste (varijabla, broj itd.).
- Svaka klauzula 'WHEN' tretira se kao alternative koje imaju
i . - Odabrat će se klauzula 'WHEN' koja odgovara vrijednosti kao vrijednosti izraza i izvršit će se odgovarajući
. - Blok 'ELSE' nije obavezan koji sadrži
koji treba izvršiti kada se niti jedna od alternativa ne podudara s vrijednošću izraza. - Oznaka 'END' označava kraj izjave CASE i obvezni je dio CASE.
Primjer 1: Aritmetičko računanje pomoću slučaja
U ovom ćemo primjeru izvršiti aritmetički izračun između dva broja 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;/
Objašnjenje koda:
- Redak koda 2: Proglašavanje varijable 'a' tipom podataka 'BROJ' i inicijalizacija vrijednošću '55'.
- Redak koda 3: Proglašavanje varijable 'b' tipom podataka 'BROJ' i inicijalizacija vrijednošću '5.'
- Redak koda 4: Deklariranje varijable 'arth_operation' kao tip podataka veličine 'VARCHAR2' veličine 20 i inicijalizacija s vrijednošću 'MULTIPLY'.
- Redak 6: Ispis izjave "Program je pokrenut".
- Redak koda 7: CASE provjerava vrijednost izraza. U ovom slučaju, vrijednost varijable 'art_operation' je 'MULTIPLY'. Ova vrijednost sada će se tretirati kao selektor za ovu CASE izjavu.
- Redak koda 10: Klauzula WHEN s vrijednošću 'MULTIPLY' podudara se s vrijednošću selektora, stoga će kontroler odabrati ovaj action_block i ispisat će poruku 'Množenje brojeva je: 275'.
- Redak koda13: Označava kraj izjave CASE.
- Redak koda 14: Ispis izjave "Program završen".
Izlaz koda:
Program started.Multiplication of the numbers are: 275Program completed.
TRAŽENI SLUČAJ Izjava
Izraz SEARCHED CASE sličan je izrazu CASE, umjesto korištenja selektora za odabir alternative, SEARCHED CASE izravno će imati izraz definiran u klauzuli WHEN.
- Izvršit će se prva klauzula WHEN koja zadovoljava uvjet, a kontroler će preskočiti preostale alternative.
Sintaksa:
CASEWHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- U gornjoj sintaksi svaka klauzula WHEN ima zasebne
i . - Izvršit će se klauzula WHEN za koju izraz vraća TRUE.
- Blok 'ELSE' nije obavezan koji sadrži
koji treba izvršiti kada nijedna od alternativa ne zadovoljava. - Oznaka 'END' označava kraj izjave CASE i obvezni je dio CASE.
Primjer 1: Aritmetički proračun pomoću pretraživanog slučaja
U ovom ćemo primjeru izvršiti aritmetički izračun između dva broja 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;/
Objašnjenje koda:
- Redak koda 2: Proglašavanje varijable 'a' tipom podataka 'BROJ' i inicijalizacija vrijednošću '55'.
- Redak koda 3: Proglašavanje varijable 'b' tipom podataka 'BROJ' i inicijalizacija vrijednošću '5'.
- Redak koda 4: Deklariranje varijable 'arth_operation' kao tip podataka veličine 'VARCHAR2' veličine 20 i inicijalizacija s vrijednošću 'DIVIDE'.
- Redak 6: Ispis izjave "Program je pokrenut".
- Redak koda 7: Izjava SEARCHED CASE započinje. Kôd od retka 8 do retka 13 preskače se jer se njihova vrijednost selektora (ADD, SUBTRACT, MULTIPLY) ne podudara s vrijednošću 'arth_operation'.
- Redak koda 14: Izraz klauzule WHEN "arth_operation = 'DIVIDE'" zadovoljan i izraz vraća TRUE.
- Redak koda 15: Izvršit će se Action_block klauzule WHEN i ispisat će se poruka "Podjela brojeva je: 11".
- Linija koda 17: Označava kraj izjave CASE.
- Redak koda 18: Ispis izjave "Program završen".
Izlaz koda:
Program started.Division of the numbers are: 11Program completed.
Sažetak
TIP | OPIS | UPOTREBA |
---|---|---|
SLUČAJ |
Slično izjavi IF-THEN-ELSIF. 'SELECTOR' se koristi za odabir alternativa umjesto logičkog izraza. |
Koristi se za odabir između nekoliko mogućnosti pomoću 'SELECTOR' |
PRETRAŽENI SLUČAJ |
CASE izjava bez stvarnog 'SELECTOR'. Umjesto toga, sadrži stvarno stanje (koje procjenjuje na TRUE / FALSE) koje će odabrati alternative. |
Uglavnom se bira između više od dvije mogućnosti. |