Mis on CASE avaldus?
CASE-lause on sarnane IF-THEN-ELSIF-i avaldusega, mis valib olemasolevate valikute seast tingimuse alusel ühe alternatiivi.
- CASE-lause kasutab järjestuse valimiseks Boole'i avaldise asemel "selektorit".
- CASE-lause avaldise väärtust käsitletakse valijana.
- Avaldis võib olla mis tahes tüüpi (aritmeetika, muutujad jne)
- Igale alternatiivile määratakse kindel eelnevalt määratletud väärtus (selektor) ja tingimusväljendi väärtusele vastava valiku väärtusega alternatiiv täidetakse.
- Erinevalt IF-THEN-ELSIF-ist saab CASE-lauset kasutada ka SQL-i lausetes.
- ELSE-lause CASE-lauses sisaldab järjestust, mis tuleb käivitada, kui ühtegi alternatiivi ei valitud.
Süntaks:
CASE (expression)WHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- Ülaltoodud süntaksis tagastab avaldis väärtuse, mis võib olla mis tahes tüüpi (muutuja, arv jne).
- Iga klauslit 'WHEN' käsitletakse alternatiividena, millel on
ja . - Valitakse lause „WHEN”, mis vastab avaldise väärtusele, ja vastav
käivitatakse. - 'ELSE' plokk on valikuline, mis hoiab
, mis tuleb käivitada, kui ükski alternatiividest ei vasta avaldise väärtusele. - "END" tähistab avalduse CASE lõppu ja see on CASE'i kohustuslik osa.
Näide 1: Aritmeetiline arvutamine juhtumi abil
Selles näites teeme aritmeetilise arvutuse kahe numbri 55 ja 5 vahel.
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;/
Koodi selgitus:
- Koodirida 2: muutuja a kuulutamine andmetüübiks „NUMBER” ja initsialiseerimine väärtusega „55”.
- Koodirida 3: Muutuja „b” deklareerimine andmetüübiks „NUMBER” ja initsialiseerimine väärtusega „5.”
- Koodirida 4: muutuja „arth_operation” deklareerimine suuruse 20 andmetüübiks „VARCHAR2” ja initsialiseerimine väärtusega „MULTIPLY”.
- Koodirida 6: Väljavõtte "Programm algas" printimine.
- Koodirida 7: CASE kontrollib avaldise väärtust. Sel juhul on muutuja 'arth_operation' väärtus 'MULTIPLY'. Seda väärtust käsitletakse selle CASE-lause nüüd valijana.
- Koodirida 10: WHEN-lause, mille väärtus on MULTIPLY, vastab valija väärtusele, seega valib kontroller selle action_blocki ja prindib teate "Numbrite korrutamine on: 275".
- Koodirida 13: tähistab CASE-lause lõppu.
- Koodirida14: väljavõtte "Programm valmis" printimine.
Koodi väljund:
Program started.Multiplication of the numbers are: 275Program completed.
OTSITUD JUHTUMI avaldus
Avaldus SEARCHED CASE sarnaneb CASE-lausega, selle asemel, et alternatiivi valimiseks kasutada valijat, on otsitud juhtumil otseselt WHEN-s määratletud väljend.
- Esimene tingimusele vastav WHEN-lause täidetakse ja kontroller jätab ülejäänud alternatiivid vahele.
Süntaks:
CASEWHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- Ülaltoodud süntaksis on igal WHEN-lausel eraldi
ja . - Käivitatakse WHEN-lause, mille puhul avaldis tagastab TÕENE.
- 'ELSE' plokk on valikuline, mis hoiab
, mis tuleb käivitada, kui ükski alternatiividest ei vasta. - "LÕPP" tähistab CASE-lause lõppu ja see on CASE-i kohustuslik osa.
Näide 1: Aritmeetiline arvutus otsitud juhtumi abil
Selles näites teeme aritmeetilise arvutuse kahe numbri 55 ja 5 vahel.
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;/
Koodi selgitus:
- Koodirida 2: muutuja a kuulutamine andmetüübiks „NUMBER” ja initsialiseerimine väärtusega „55”.
- Koodirida 3: Muutuja „b” deklareerimine andmetüübiks „NUMBER” ja initsialiseerimine väärtusega „5”.
- Koodirida 4: muutuja „arth_operation” deklareerimine suuruse 20 andmetüübiks „VARCHAR2” ja initsialiseerimine väärtusega „DIVIDE”.
- Koodirida 6: Väljavõtte "Programm algas" printimine.
- Koodirida 7: algab lause OTSITUD JUHTUM. Kood 8. realt 13. reale jäetakse vahele, kuna nende valija väärtus (ADD, SUBTRACT, MULTIPLY) ei ühti 'arth_operation' väärtusega.
- Koodirida 14: WHEN-lause väljend "arth_operation = 'DIVIDE'" on täidetud ja avaldis tagastab TÕENE.
- Koodirida 15: täidetakse WHEN-klausli Action_block ja trükitakse teade "Numbrite jaotus on: 11".
- Koodirida 17: tähistab CASE-lause lõppu.
- Koodirida 18: Väljavõtte "Programm valmis" printimine.
Koodi väljund:
Program started.Division of the numbers are: 11Program completed.
Kokkuvõte
TÜÜP | KIRJELDUS | KASUTAMINE |
---|---|---|
JUHTUM |
Sarnane IF-THEN-ELSIF-i avaldusega. Boole'i avaldise asemel kasutatakse alternatiive 'SELECTOR'iga. |
Kasutatakse 'SELECTOR' abil mitme alternatiivi vahel valimiseks |
OTSITUD JUHTUM |
CASE-lause ilma tegeliku 'SELECTOR'ita. Selle asemel sisaldab see tegelikke tingimusi (mille väärtuseks on TRUE / FALSE), mis valib alternatiivid. |
Kasutatakse enam kui kahe alternatiivi vahel valimiseks. |