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.

  • 🔀 Tarkoitus: CASE valitsee yhden toimintolohkon monista käyttäen valitsinta Boolen ketjun sijaan.
  • 🎯 Valitsin: CASE-lauseke lasketaan kerran ja sitä verrataan jokaiseen WHEN-arvoon.
  • 🔎 Haettu tapaus: Lisää täyden ehdon jokaiseen WHEN-lausekkeeseen ja suorittaa ensimmäisen, joka on tosi.
  • 🧮 Mikä tahansa tyyppi: Valitsimen arvo voi olla muuttuja, luku tai aritmeettinen lauseke.
  • 🛟 MUU: Valinnainen ELSE-lohko suoritetaan, kun vaihtoehtoisia lausekkeita ei löydy.
  • 🔚 LOPPU TAPAUS: Pakollinen END CASE päättää lausekkeen.
  • 🗄️ SQL-ystävällinen: Toisin kuin IF, CASE-operaattoria voidaan käyttää myös suoraan SQL-lauseiden sisällä.

CASE-selostus sisään Oracle PL / SQL

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ä.

UKK

Yksinkertainen CASE-operaattori vertaa yhtä valitsinarvoa jokaiseen WHEN-arvoon. Haetulla CASE-operaattorilla ei ole valitsinta ja se arvioi täyden ehdon jokaisessa WHEN-arvossa, joten se käsittelee sekä vaihteluvälejä että yhdistettyjä testejä.

Kyllä. CASE-lauseke voi esiintyä SELECT-, WHERE- tai ORDER BY -lausekkeessa, mikä on merkittävä etu verrattuna IF-THEN-ELSIF-rakenteeseen, joka toimii vain PL/SQL-lohkojen sisällä.

CASE-lauseke aiheuttaa CASE_NOT_FOUND-poikkeuksen, jos yhtään vastaavaa haaraa ei löydy eikä ELSE-lauseketta ole. ELSE-lausekkeen lisääminen, jopa tyhjän NULL-lausekkeen ollessa kyseessä, välttää tämän ajonaikaisen virheen.

Kyllä. Kun haarat vertaavat yhtä lauseketta kiinteisiin arvoihin, tekoäly voi kirjoittaa ketjun uudelleen puhtaampana CASE-lauseena. Tarkista tulos, koska CASE ilman ELSE-lauseketta käyttäytyy eri tavalla kuin puuttuva ELSIF-lauseke.

CASE-lauseke suorittaa toimintolohkon haaraa kohden ja päättyy END CASE -lausekkeeseen. CASE-lauseke palauttaa yhden arvon ja päättyy END-lauseeseen, joten se voidaan määrittää muuttujalle tai käyttää SQL:ssä.

Tiivistä tämä viesti seuraavasti: