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.

Võta see postitus kokku järgmiselt: