CASE-selostus sisään Oracle PL/SQL ja esimerkkejä
⚡ Älykäs yhteenveto
PL/SQL CASE -lauseke valitsee yhden vaihtoehdon useista valitsimen perusteella, aivan kuten IF-THEN-ELSIF, mutta selkeämmin. Yksinkertainen CASE-lauseke löytää valitsimen arvon, kun taas haettu CASE-lauseke arvioi jokaisen WHEN-lausekkeen ehdon ja suorittaa ensimmäisen, joka on tosi.

Mikä on CASE-lausunto?
CASE-lauseke on samankaltainen kuin IF-THEN-ELSIF-lauseke; se valitsee yhden vaihtoehdon käytettävissä olevista vaihtoehdoista ehdon perusteella.
- CASE-lauseke käyttää sekvenssin valitsemiseen totuusarvolausekkeen sijaan "valitsinta".
- CASE-lausekkeen lausekkeen arvoa käsitellään valitsimena.
- Lauseke voi olla minkä tahansa tyyppinen (aritmeettinen, muuttujat jne.).
- Jokaiselle vaihtoehdolle annetaan tietty ennalta määritetty arvo (valitsin), ja vaihtoehto, jonka valitsimen arvo vastaa ehdollisen lausekkeen arvoa, suoritetaan.
- Toisin kuin IF-THEN-ELSIF, CASE-käskyä voidaan käyttää myös SQL-käskyissä.
- CASE-lausekkeen ELSE-lohko sisältää suoritettavan sekvenssin, kun yhtäkään vaihtoehtoa ei ole valittu.
Syntaksi
CASE (expression) WHEN <value1> THEN action_block1; WHEN <value2> THEN action_block2; WHEN <value3> THEN action_block3; ELSE action_block_default; END CASE;
- Yllä olevassa syntaksissa lauseke palauttaa arvon, joka voi olla minkä tahansa tyyppinen.
- Jokainen 'WHEN'-lauseke on vaihtoehtoinen lauseke, jolla on ja .
- Lauseketta vastaavan arvon omaava 'WHEN'-lauseke valitaan, ja sen teloitetaan.
- 'ELSE'-lohko on valinnainen ja sisältää suoritettava, kun vaihtoehtoisia tapoja ei ole.
- 'END' merkitsee CASE-lausekkeen loppua ja on pakollinen osa CASE-lauseketta.
Esimerkki 1: Aritmeettinen laskutoimitus CASE-lausekkeella
Tässä esimerkissä suoritamme aritmeettisen laskutoimituksen kahden luvun, 55 ja 5, välillä.
DECLARE a NUMBER := 55; b NUMBER := 5; arth_operation VARCHAR2(20) := 'MULTIPLY'; BEGIN dbms_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; /
Code Selitys
- Code rivi 2: Muuttujan 'a' määrittäminen arvoksi 'NUMBER' ja sen alustaminen arvolla '55'.
- Code rivi 3: Muuttujan 'b' määrittäminen arvoksi 'NUMBER' ja sen alustaminen arvolla '5'.
- Code rivi 4: Muuttujan 'arth_operation' määrittäminen arvoksi 'VARCHAR2', jonka koko on 20, ja sen alustaminen arvolla 'MULTIPLY'.
- Code rivi 6: Tulostaa lauseen ”Ohjelma käynnistynyt”.
- Code rivi 7: CASE tarkistaa lausekkeen arvon. Tässä 'arth_operation':n arvo on 'MULTIPLY', jota käsitellään valitsimena.
- Code rivi 10: WHEN-lauseke, jonka arvo on 'MULTIPLY', vastaa valitsinta, joten ohjain valitsee tämän toimintolohkon ja tulostaa 'Lukujen kertolasku on: 275'.
- Code rivi 13: Merkitsee CASE-lausekkeen loppua.
- Code rivi 14: Tulostaa lauseen ”Ohjelma valmis”.
Code ulostulo
Program started. Multiplication of the numbers are: 275 Program completed.
SEARCHED CASE lausunto
Searched CASE -lauseke on samankaltainen kuin CASE-lauseke, mutta valitsimen sijaan vaihtoehdon valitsemiseen käytetään valitsinta, vaan haettavalla CASE-lausekkeella on suoraan WHEN-lauseessa määritelty ehto.
- Ensimmäinen ehdon täyttävä WHEN-lauseke suoritetaan, ja ohjain ohittaa loput vaihtoehdot.
Syntaksi
CASE WHEN <expression1> THEN action_block1; WHEN <expression2> THEN action_block2; WHEN <expression3> THEN action_block3; ELSE action_block_default; END CASE;
- Yllä olevassa syntaksissa jokaisella WHEN-lausekkeella on erillinen ja .
- WHEN-lauseke, jolle lauseke palauttaa arvon TRUE, suoritetaan.
- 'ELSE'-lohko on valinnainen ja sisältää suoritettava, kun mikään vaihtoehdoista ei ole toteutunut.
- 'END' merkitsee CASE-lausekkeen loppua ja on pakollinen osa CASE-lauseketta.
Esimerkki 1: Aritmeettinen laskutoimitus haettua kirjainkokoa käyttäen
Tässä esimerkissä suoritamme aritmeettisen laskutoimituksen kahden luvun, 55 ja 5, välillä.
DECLARE a NUMBER := 55; b NUMBER := 5; arth_operation VARCHAR2(20) := 'DIVIDE'; BEGIN dbms_output.put_line('Program started.'); CASE WHEN 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; /
Code Selitys
- Code rivi 2: Muuttujan 'a' määrittäminen arvoksi 'NUMBER' ja sen alustaminen arvolla '55'.
- Code rivi 3: Muuttujan 'b' määrittäminen arvoksi 'NUMBER' ja sen alustaminen arvolla '5'.
- Code rivi 4: Muuttujan 'arth_operation' määrittäminen arvoksi 'VARCHAR2', jonka koko on 20, ja sen alustaminen arvolla 'DIVIDE'.
- Code rivi 6: Tulostaa lauseen ”Ohjelma käynnistynyt”.
- Code rivi 7: Haettu CASE-lauseke alkaa. ADD- ja SUB-lauseetTRACT ja MULTIPLY ohitetaan, koska niiden ehdot eivät vastaa 'arth_operation'-arvon arvoa.
- Code rivi 14: WHEN-lauseke “arth_operation = 'DIVIDE'” täyttyy ja palauttaa arvon TRUE.
- Code rivi 15: WHEN-lauseen toimintolohko suoritetaan ja tulostuu 'Lukujen jakolasku on: 11'.
- Code rivi 17: Merkitsee CASE-lausekkeen loppua.
- Code rivi 18: Tulostaa lauseen ”Ohjelma valmis”.
Code ulostulo
Program started. Division of the numbers are: 11 Program completed.
CASE- ja SEARCHED CASE -tapausten vertailu
Molemmat lomakkeet valitsevat yhden haaran, mutta ne eroavat toisistaan haaran valinnassa, kuten alla on esitetty.
| Tyyppi | Tuotetiedot | Käyttö |
|---|---|---|
| CASE | Samanlainen JOS-SIIN-ELSIF lauseke. Vaihtoehto valitaan totuusarvolausekkeen sijaan 'valitsimella'. | Käytetään valitsemaan useista vaihtoehdoista valitsimen avulla. |
| HAETTU TAPAUS | CASE-lauseke ilman varsinaista valitsinta. Sen sijaan se sisältää ehdon (joka antaa tulokseksi TRUE tai FALSE), joka valitsee vaihtoehdon. | Käytetään valittaessa useammasta kuin kahdesta vaihtoehdosta, enimmäkseen alueellisten ehtojen yhteydessä. |
