Kas yra CASE pareiškimas?
„CASE“ sakinys yra panašus į „IF-THEN-ELSIF“ teiginį, kuris parenka vieną alternatyvą pagal sąlygą iš galimų parinkčių.
- CASE sakinyje sekai pasirinkti naudojama „selector“, o ne „Boolean“ išraiška.
- Išraiška CASE sakinyje bus traktuojama kaip selektorius.
- Išraiška gali būti bet kokio tipo (aritmetinė, kintamieji ir kt.)
- Kiekvienai alternatyvai priskiriama tam tikra iš anksto nustatyta reikšmė (selektorius), ir alternatyva su selektoriaus verte, kuri atitinka sąlyginę išraiškos vertę, bus vykdoma.
- Skirtingai nuo IF-THEN-ELSIF, CASE sakinys taip pat gali būti naudojamas SQL sakiniuose.
- ELSE bloke CASE sakinyje yra seka, kurią reikia vykdyti, kai nepasirinkta nė viena iš alternatyvų.
Sintaksė:
CASE (expression)WHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- Pirmiau pateiktoje sintaksėje išraiška pateiks reikšmę, kuri gali būti bet kokio tipo (kintamasis, skaičius ir kt.).
- Kiekviena sąlyga „KADA“ traktuojama kaip alternatyva, turinti
ir . - Bus pasirinkta sąlyga „KADA“, kuri atitinka išraiškos vertę, ir bus vykdoma atitinkama
. - „ELSE“ blokas yra neprivalomas, kuriame yra
, kurį reikia vykdyti, kai nė viena iš alternatyvų neatitinka išraiškos vertės. - „END“ žymi CASE pareiškimo pabaigą ir yra privaloma CASE dalis.
1 pavyzdys: Aritmetinis skaičiavimas naudojant atvejį
Šiame pavyzdyje atliksime aritmetinį skaičiavimą tarp dviejų skaičių 55 ir 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;/
Kodo paaiškinimas:
- 2 kodo eilutė: kintamojo „a“ paskelbimas duomenų tipu „NUMBER“ ir inicijavimas reikšme „55“.
- 3 kodo eilutė: kintamojo „b“ paskelbimas duomenų tipu „NUMBER“ ir inicijavimas reikšme „5.“
- 4 kodo eilutė: kintamojo „arth_operation“ paskelbimas 20 dydžio duomenų tipu „VARCHAR2“ ir jo inicijavimas reikšme „MULTIPLY“.
- Kodo 6 eilutė: ataskaitos „Programa pradėta“ spausdinimas.
- 7 kodo eilutė: CASE tikrina išraiškos vertę. Šiuo atveju kintamojo „arth_operation“ vertė yra „MULTIPLY“. Ši reikšmė dabar bus traktuojama kaip šio CASE teiginio selektorius.
- 10 kodo eilutė: WHEN sąlyga su verte „MULTIPLY“ sutampa su selektoriaus verte, todėl valdiklis pasirinks šį veiksmo bloką ir išspausdins pranešimą „Skaičių daugyba yra: 275“.
- Kodo eilutė13: pažymi CASE teiginio pabaigą.
- Kodo eilutė14: ataskaitos „Programa baigta“ spausdinimas.
Kodo išvestis:
Program started.Multiplication of the numbers are: 275Program completed.
IEŠKOTOS ATVEJOS pareiškimas
Ieškinys PAIEŠKOTAS ATVEJAS yra panašus į CASE teiginį, užuot pasirinkus alternatyvų pasirinkimo mygtuką, PAIEŠKOTAS ATVEJIS tiesiogiai turės išraišką, apibrėžtą WHEN sąlygoje.
- Pirmoji sąlyga tenkinanti sąlyga bus įvykdyta, o valdiklis praleis likusias alternatyvas.
Sintaksė:
CASEWHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- Ankstesnėje sintaksėje kiekviena WHEN sąlyga turi atskirus
ir . - Bus vykdoma sąlyga WHEN, kuriai išraiška grąžina TRUE.
- „ELSE“ blokas yra neprivalomas, kuriame yra
, kurį reikia vykdyti, kai nė viena iš alternatyvų netenkina. - „Pabaiga“ žymi CASE pareiškimo pabaigą ir yra privaloma CASE dalis.
1 pavyzdys: Aritmetinis skaičiavimas naudojant ieškomą atvejį
Šiame pavyzdyje atliksime aritmetinį skaičiavimą tarp dviejų skaičių 55 ir 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;/
Kodo paaiškinimas:
- 2 kodo eilutė: kintamojo „a“ paskelbimas duomenų tipu „NUMBER“ ir inicijavimas reikšme „55“.
- 3 kodo eilutė: kintamojo „b“ paskelbimas „NUMBER“ duomenų tipu ir inicijavimas reikšme „5“.
- 4 kodo eilutė: kintamojo „arth_operation“ paskelbimas 20 dydžio duomenų tipu „VARCHAR2“ ir jo inicijavimas reikšme „DIVIDE“.
- Kodo 6 eilutė: ataskaitos „Programa pradėta“ spausdinimas.
- Kodo 7 eilutė: prasideda IEŠKOTO BYLOS sakinys. Kodas nuo 8 eilutės iki 13 eilutės praleidžiamas, nes jų parinkiklio vertė (PRIDĖTI, SUBTRAKTAS, DAUGIAU) nesutampa su „arth_operation“ verte.
- 14 kodo eilutė: WHEN sakinio išraiška "arth_operation = 'DIVIDE" "yra patenkinta ir išraiška pateikia TRUE.
- 15 kodo eilutė: bus įvykdyta sąlyga WHEN „Action_block“ ir bus išspausdintas pranešimas „Skaičių padalijimas: 11“.
- 17 kodo eilutė: žymi CASE teiginio pabaigą.
- Kodo 18 eilutė: ataskaitos „Programa baigta“ spausdinimas.
Kodo išvestis:
Program started.Division of the numbers are: 11Program completed.
Santrauka
TIPAS | APIBŪDINIMAS | NAUDOJIMAS |
---|---|---|
ATVEJIS |
Panašus į IF-THEN-ELSIF teiginį. Vietoje Boolean išraiškos alternatyvoms pasirinkti naudojamas „SELECTOR“. |
Naudojamas pasirinkti iš kelių alternatyvų naudojant „SELECTOR“ |
IEŠKOTAS ATVEJAS |
CASE pareiškimas be faktinio „SELECTOR“. Vietoj to joje yra faktinė sąlyga (kuri vertinama kaip TIKRA / NETIESA), kuri pasirinks alternatyvas. |
Naudojamas pasirinkti iš daugiau nei dviejų alternatyvų. |