Oracle PL / SQL: CASE avaldus koos näidetega

Lang L: none (table-of-contents):

Anonim

Mis on CASE avaldus?

CASE-lause on sarnane IF-THEN-ELSIF-i avaldusega, mis valib olemasolevate valikute seast tingimuse alusel ühe alternatiivi.

  • CASE-lause kasutab järjestuse valimiseks Boole'i ​​avaldise asemel "selektorit".
  • CASE-lause avaldise väärtust käsitletakse valijana.
  • Avaldis võib olla mis tahes tüüpi (aritmeetika, muutujad jne)
  • Igale alternatiivile määratakse kindel eelnevalt määratletud väärtus (selektor) ja tingimusväljendi väärtusele vastava valiku väärtusega alternatiiv täidetakse.
  • Erinevalt IF-THEN-ELSIF-ist saab CASE-lauset kasutada ka SQL-i lausetes.
  • ELSE-lause CASE-lauses sisaldab järjestust, mis tuleb käivitada, kui ühtegi alternatiivi ei valitud.

Süntaks:

CASE (expression)WHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  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 klauslit 'WHEN' käsitletakse alternatiividena, millel on ja .
  • Valitakse lause „WHEN”, mis vastab avaldise väärtusele, ja vastav käivitatakse.
  • 'ELSE' plokk on valikuline, mis hoiab , mis tuleb käivitada, kui ükski alternatiividest ei vasta avaldise väärtusele.
  • "END" tähistab avalduse CASE lõppu ja see on CASE'i kohustuslik osa.

Näide 1: Aritmeetiline arvutamine juhtumi abil

Selles näites teeme aritmeetilise arvutuse kahe numbri 55 ja 5 vahel.

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;/

Koodi selgitus:

  • Koodirida 2: muutuja a kuulutamine andmetüübiks „NUMBER” ja initsialiseerimine väärtusega „55”.
  • Koodirida 3: Muutuja „b” deklareerimine andmetüübiks „NUMBER” ja initsialiseerimine väärtusega „5.”
  • Koodirida 4: muutuja „arth_operation” deklareerimine suuruse 20 andmetüübiks „VARCHAR2” ja initsialiseerimine väärtusega „MULTIPLY”.
  • Koodirida 6: Väljavõtte "Programm algas" printimine.
  • Koodirida 7: CASE kontrollib avaldise väärtust. Sel juhul on muutuja 'arth_operation' väärtus 'MULTIPLY'. Seda väärtust käsitletakse selle CASE-lause nüüd valijana.
  • Koodirida 10: WHEN-lause, mille väärtus on MULTIPLY, vastab valija väärtusele, seega valib kontroller selle action_blocki ja prindib teate "Numbrite korrutamine on: 275".
  • Koodirida 13: tähistab CASE-lause lõppu.
  • Koodirida14: väljavõtte "Programm valmis" printimine.

Koodi väljund:

Program started.Multiplication of the numbers are: 275Program completed.

OTSITUD JUHTUMI avaldus

Avaldus SEARCHED CASE sarnaneb CASE-lausega, selle asemel, et alternatiivi valimiseks kasutada valijat, on otsitud juhtumil otseselt WHEN-s määratletud väljend.

  • Esimene tingimusele vastav WHEN-lause täidetakse ja kontroller jätab ülejäänud alternatiivid vahele.

Süntaks:

CASEWHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • Ülaltoodud süntaksis on igal WHEN-lausel eraldi ja .
  • Käivitatakse WHEN-lause, mille puhul avaldis tagastab TÕENE.
  • 'ELSE' plokk on valikuline, mis hoiab , mis tuleb käivitada, kui ükski alternatiividest ei vasta.
  • "LÕPP" tähistab CASE-lause lõppu ja see on CASE-i kohustuslik osa.

Näide 1: Aritmeetiline arvutus otsitud juhtumi abil

Selles näites teeme aritmeetilise arvutuse kahe numbri 55 ja 5 vahel.

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;/

Koodi selgitus:

  • Koodirida 2: muutuja a kuulutamine andmetüübiks „NUMBER” ja initsialiseerimine väärtusega „55”.
  • Koodirida 3: Muutuja „b” deklareerimine andmetüübiks „NUMBER” ja initsialiseerimine väärtusega „5”.
  • Koodirida 4: muutuja „arth_operation” deklareerimine suuruse 20 andmetüübiks „VARCHAR2” ja initsialiseerimine väärtusega „DIVIDE”.
  • Koodirida 6: Väljavõtte "Programm algas" printimine.
  • Koodirida 7: algab lause OTSITUD JUHTUM. Kood 8. realt 13. reale jäetakse vahele, kuna nende valija väärtus (ADD, SUBTRACT, MULTIPLY) ei ühti 'arth_operation' väärtusega.
  • Koodirida 14: WHEN-lause väljend "arth_operation = 'DIVIDE'" on täidetud ja avaldis tagastab TÕENE.
  • Koodirida 15: täidetakse WHEN-klausli Action_block ja trükitakse teade "Numbrite jaotus on: 11".
  • Koodirida 17: tähistab CASE-lause lõppu.
  • Koodirida 18: Väljavõtte "Programm valmis" printimine.

Koodi väljund:

Program started.Division of the numbers are: 11Program completed.

Kokkuvõte

TÜÜP KIRJELDUS KASUTAMINE

JUHTUM

Sarnane IF-THEN-ELSIF-i avaldusega. Boole'i ​​avaldise asemel kasutatakse alternatiive 'SELECTOR'iga.

Kasutatakse 'SELECTOR' abil mitme alternatiivi vahel valimiseks

OTSITUD JUHTUM

CASE-lause ilma tegeliku 'SELECTOR'ita. Selle asemel sisaldab see tegelikke tingimusi (mille väärtuseks on TRUE / FALSE), mis valib alternatiivid.

Kasutatakse enam kui kahe alternatiivi vahel valimiseks.