CASE avaldus sisse Oracle PL/SQL koos näidetega
Mis on CASE avaldus?
CASE-lause sarnaneb lausega IF-THEN-ELSIF, mis valib saadaolevate valikute hulgast tingimuse põhjal ühe alternatiivi.
- CASE-lause kasutab jada valimiseks pigem "selektorit", mitte Boole'i avaldist.
- Avaldise väärtust CASE-lauses käsitletakse valijana.
- Avaldis võib olla mis tahes tüüpi (aritmeetiline, muutujad jne)
- Igale alternatiivile määratakse teatud eelmääratletud väärtus (selektor) ja tingimusavaldise väärtusele vastava valija väärtusega alternatiiv käivitatakse.
- Erinevalt IF-THEN-ELSIF-ist saab CASE-lauset kasutada ka SQL-lausetes.
- ELSE plokk CASE-lauses sisaldab jada, mis tuleb käivitada, kui ühtegi alternatiivi pole valitud.
Süntaks
CASE (expression) WHEN <valuel> THEN action_blockl; WHEN <value2> THEN action_block2; WHEN <value3> 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 „MILLAL”-klauslit käsitletakse alternatiivina, millel on olemas ja .
- Valitakse lause WHEN, mis vastab avaldise väärtusele, ja vastav hukatakse.
- „ELSE” plokk on valikuline, mis sisaldab mis tuleb käivitada, kui ükski alternatiividest ei vasta avaldise väärtusele.
- "END" tähistab CASE-lause lõppu ja see on CASE-i kohustuslik osa.
Näide 1: Aritmeetiline arvutamine suurjuhtude abil
Selles näites teeme aritmeetilise arvutuse kahe arvu 55 ja 5 vahel.
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 Selgitus
- Code rida 2: Muutuja 'a' deklareerimine andmetüübina 'NUMBER' ja selle initsialiseerimine väärtusega '55'.
- Code rida 3: Muutuja 'b' deklareerimine andmetüübina 'NUMBER' ja selle initsialiseerimine väärtusega '5'.
- Code rida 4: Muutuja 'arth_operation' deklareerimine andmetüübina 'VARCHAR2' suurusega 20 ja selle initsialiseerimine väärtusega 'MULTIPLY'.
- Code rida 6: Lause „Programm käivitatud” printimine.
- Code rida 7: CASE kontrollib avaldise väärtust. Sel juhul on muutuja 'arth_operation' väärtus 'MULTIPLY'. Seda väärtust käsitletakse nüüd selle CASE-lause valijana.
- Code rida 10: WHEN-klausli väärtus 'MULTIPLY' vastab selektori väärtusele, seega valib kontroller selle action_blocki ja prindib teate 'Arvude korrutis on: 275'.
- Code rida 13: tähistab CASE-lause lõppu.
- Code rida 14: Lause „Programm lõpetatud” printimine.
Code Väljund
Program started. Multiplication of the numbers are: 275 Program completed.
OTSITUD JUHTUMI avaldus
Avaldus SEARCHED CASE sarnaneb lausega CASE, selle asemel, et kasutada alternatiivi valimiseks valijat, on SEARCHED CASE otse lauses WHEN määratletud avaldis.
- Tingimusele vastav esimene WHEN-klausel käivitatakse ja kontroller jätab ülejäänud alternatiivid vahele.
Süntaks
CASE WHEN <expression1> THEN action_blockl; WHEN <expression2> THEN action_block2; WHEN <expression3> THEN action_block3; ELSE action_block_default; END CASE;
- Ülaltoodud süntaksis on igal WHEN-klausel eraldi ja .
- Täidetakse WHEN-klausel, mille puhul avaldis tagastab väärtuse TRUE.
- „ELSE” plokk on valikuline, mis sisaldab mida tuleb täita, kui ükski alternatiividest ei rahulda.
- "END" tähistab CASE-lause lõppu ja see on CASE-i kohustuslik osa.
Näide 1: Aritmeetiline arvutamine otsitud suurjuhtude abil
Selles näites teeme aritmeetilise arvutuse kahe arvu 55 ja 5 vahel.
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 Selgitus
- Code rida 2: Muutuja 'a' deklareerimine andmetüübina 'NUMBER' ja selle initsialiseerimine väärtusega '55'.
- Code rida 3: Muutuja 'b' deklareerimine andmetüübina 'NUMBER' ja selle initsialiseerimine väärtusega '5'.
- Code rida 4: Muutuja 'arth_operation' deklareerimine andmetüübina 'VARCHAR2' suurusega 20 ja selle initsialiseerimine väärtusega 'DIVIDE'.
- Code rida 6: Lause „Programm käivitatud” printimine.
- Code rida 7: algab SEARCHED CASE lause. Kood reast 8 kuni reani 13 jäetakse vahele, kuna nende selektorväärtus (ADD, SUB)TRACT, MULTIPLY) ei vasta 'arth_operation' väärtusele.
- Code rida 14: WHEN-klausli avaldis „arth_operation = 'DIVIDE'” on täidetud ja avaldis tagastab väärtuse TRUE.
- Code rida 15: Käivitatakse WHEN-klausli tegevusplokk ja kuvatakse teade 'Arvude jagamine on: 11'.
- Code rida 17: Märgib CASE-lause lõppu.
- Code rida 18: Trükitakse teade „Programm on lõpetatud”.
Code Väljund
Program started. Division of the numbers are: 11 Program completed.
kokkuvõte
| TÜÜP | KIRJELDUS | KASUTAMINE |
|---|---|---|
| CASE | Sarnaselt KUI-SIIS-ELSIF avaldus. Alternatiivide valimiseks kasutatakse Boole'i avaldise asemel nuppu 'SELECTOR'. | Kasutatakse mitme alternatiivi hulgast valimiseks, kasutades nuppu SELECTOR |
| OTSITUD KOHTU | CASE lause ilma tegeliku SELECTORita. Selle asemel sisaldab see tegelikku tingimust (mille väärtus on TRUE/FALSE), mis valib alternatiivid. | Kasutatakse enam kui kahe alternatiivi valimiseks enamasti. |
