„Oracle PL / SQL“: CASE pareiškimas su pavyzdžiais

Turinys:

Anonim

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

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