Mikä on CASE Statement?
CASE-lause on samanlainen kuin IF-THEN-ELSIF-lause, joka valitsee yhden vaihtoehdon ehdon perusteella käytettävissä olevista vaihtoehdoista.
- CASE-käsky käyttää "valitsinta" Boolen lausekkeen sijaan sarjan valitsemiseksi.
- CASE-käskyn lausekkeen arvoa käsitellään valitsimena.
- Lauseke voi olla mitä tahansa tyyppiä (aritmeettinen, muuttujat jne.)
- Kullekin vaihtoehdolle määritetään tietty ennalta määritetty arvo (valitsin), ja vaihtoehto, jonka valitsin arvo on ehdollisen lausekkeen arvo, suoritetaan.
- Toisin kuin IF-THEN-ELSIF, CASE-käskyä voidaan käyttää myös SQL-lauseissa.
- ELSE-lause CASE-käskyssä pitää järjestyksen, joka on suoritettava, kun mikään vaihtoehdoista ei ole valittu.
Syntaksi:
CASE (expression)WHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- Edellä olevassa syntaksissa lauseke palauttaa arvon, joka voi olla minkä tahansa tyyppinen (muuttuja, numero jne.).
- Kutakin 'WHEN' -lauseketta käsitellään vaihtoehtona, jolla on
ja . - 'WHEN' -lauseke, joka vastaa lausekkeen arvoa, valitaan ja vastaava
suoritetaan. - 'ELSE' -lohko on valinnainen, ja siinä on
, joka on suoritettava, kun mikään vaihtoehdoista ei vastaa lausekkeen arvoa. - Loppu merkitsee CASE-lausunnon loppua, ja se on pakollinen osa CASE-lausuntoa.
Esimerkki 1: Aritmeettinen laskenta tapauksen avulla
Tässä esimerkissä aiomme suorittaa aritmeettisen laskennan kahden numeron 55 ja 5 välillä.
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;/
Koodin selitys:
- Koodirivi 2: Ilmoitetaan muuttuja 'a' NUMBER-tietotyypiksi ja alustetaan se arvolla '55'.
- Koodirivi 3: Muuttujan 'b' ilmoittaminen tietotyypiksi NUMBER ja alustaminen sen arvolla '5.'
- Koodirivi 4: Muuttujan 'arth_operation' julistaminen koon 20 VARCHAR2-tietotyypiksi ja alustaminen arvolla 'MULTIPLY'.
- Koodirivi 6: Lausekkeen "Ohjelma aloitettu" tulostaminen.
- Koodirivi 7: CASE tarkistaa lausekkeen arvon. Tässä tapauksessa muuttujan 'arth_operation' arvo on 'MULTIPLY'. Tätä arvoa käsitellään tämän CASE-käskyn valitsimena nyt.
- Koodirivi 10: WHEN-lause, jonka arvo on 'MULTIPLY', vastaa valitsimen arvoa, joten ohjain valitsee tämän toimintolohkon ja tulostaa viestin 'Numeroiden kertolasku on: 275'.
- Koodirivi13: Merkitsee CASE-käskyn lopun.
- Koodirivi14: Lausunnon "Ohjelma valmis" tulostaminen.
Koodilähtö:
Program started.Multiplication of the numbers are: 275Program completed.
HAKU TAPAUSTEN Lausunto
SEARCHED CASE -käsky on samanlainen kuin CASE-käsky sen sijaan, että valitsisit valitsemaan vaihtoehdon, SEARCHED CASE saa suoraan WHEN-lausekkeessa määritetyn lausekkeen.
- Ensimmäinen ehto täyttävä WHEN-lause toteutetaan, ja ohjain ohittaa muut vaihtoehdot.
Syntaksi:
CASEWHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- Yllä olevassa syntaksissa kullakin WHEN-lauseella on erilliset
ja . - WHEN-lause, jolle lauseke palauttaa TOSI, suoritetaan.
- 'ELSE' -lohko on valinnainen, ja siinä on
, joka on suoritettava, kun mikään vaihtoehdoista ei tyydy. - Loppu merkitsee CASE-lausunnon loppua, ja se on CASE-pakollinen osa.
Esimerkki 1: Aritmeettinen laskenta haetun tapauksen avulla
Tässä esimerkissä aiomme suorittaa aritmeettisen laskennan kahden numeron 55 ja 5 välillä.
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;/
Koodin selitys:
- Koodirivi 2: Ilmoitetaan muuttuja 'a' NUMBER-tietotyypiksi ja alustetaan se arvolla '55'.
- Koodirivi 3: Ilmoitetaan muuttuja b tietotyypiksi NUMBER ja alustetaan se arvolla 5.
- Koodirivi 4: Muuttujan 'arth_operation' julistaminen koon 20 VARCHAR2-tietotyypiksi ja alustaminen arvolla 'DIVIDE'.
- Koodirivi 6: Lausekkeen "Ohjelma aloitettu" tulostaminen.
- Koodirivi 7: HAKU TAPAUS -lauseke alkaa. Koodi riviltä 8 riville 13 ohitetaan, koska niiden valitsinarvo (LISÄÄ, SUBTRAKTI, MULTIPLY) ei vastaa 'arth_operation' -arvoa.
- Koodirivi 14: WHEN-lauseke "arth_operation = 'DIVIDE" "on tyydyttävä ja lauseke palauttaa TOSI.
- Koodirivi 15: WHEN-lauseen Action_block suoritetaan ja viesti 'Numeroiden jako ovat: 11' tulostetaan.
- Koodirivi 17: Merkitsee CASE-lauseen lopun.
- Koodirivi 18: Lausunnon "Ohjelma valmis" tulostaminen.
Koodilähtö:
Program started.Division of the numbers are: 11Program completed.
Yhteenveto
TYYPPI | KUVAUS | KÄYTTÖ |
---|---|---|
TAPAUS |
Samanlainen IF-THEN-ELSIF-lausunnon kanssa. Vaihtoehtojen valitsemiseksi Boolen lausekkeen sijasta käytetään 'SELECTOR'. |
Käytetään valitsemaan useista vaihtoehdoista käyttämällä 'SELECTOR' |
HAKU TAPAUS |
CASE-lause ilman todellista 'SELECTOR'. Sen sijaan se sisältää todellisen ehdon (joka arvioi arvon TOSI / EPÄTOSI), joka valitsee vaihtoehdot. |
Käytetään useimpien yli kahden vaihtoehdon välillä. |