Oracle PL / SQL: CASE Izjava s primjerima

Sadržaj:

Anonim

Što je CASE izjava?

Izjava CASE slična je izjavi IF-THEN-ELSIF koja odabire jednu alternativu na temelju stanja iz dostupnih opcija.

  • Izraz CASE koristi "selektor", a ne logički izraz za odabir slijeda.
  • Vrijednost izraza u CASE izrazu tretirat će se kao selektor.
  • Izraz može biti bilo koje vrste (aritmetika, varijable itd.)
  • Svaka alternativa dodjeljuje se određenoj unaprijed definiranoj vrijednosti (selektor), a alternativa s vrijednošću selektora koja odgovara vrijednosti uvjetnog izraza bit će izvršena.
  • Za razliku od IF-THEN-ELSIF, CASE izraz također se može koristiti u SQL izrazima.
  • ELSE blok u CASE izrazu sadrži slijed koji treba izvršiti kada nije odabrana nijedna od alternativa.

Sintaksa:

CASE (expression)WHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • U gornjoj sintaksi izraz će vratiti vrijednost koja može biti bilo koje vrste (varijabla, broj itd.).
  • Svaka klauzula 'WHEN' tretira se kao alternative koje imaju i .
  • Odabrat će se klauzula 'WHEN' koja odgovara vrijednosti kao vrijednosti izraza i izvršit će se odgovarajući .
  • Blok 'ELSE' nije obavezan koji sadrži koji treba izvršiti kada se niti jedna od alternativa ne podudara s vrijednošću izraza.
  • Oznaka 'END' označava kraj izjave CASE i obvezni je dio CASE.

Primjer 1: Aritmetičko računanje pomoću slučaja

U ovom ćemo primjeru izvršiti aritmetički izračun između dva broja 55 i 5.

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

Objašnjenje koda:

  • Redak koda 2: Proglašavanje varijable 'a' tipom podataka 'BROJ' i inicijalizacija vrijednošću '55'.
  • Redak koda 3: Proglašavanje varijable 'b' tipom podataka 'BROJ' i inicijalizacija vrijednošću '5.'
  • Redak koda 4: Deklariranje varijable 'arth_operation' kao tip podataka veličine 'VARCHAR2' veličine 20 i inicijalizacija s vrijednošću 'MULTIPLY'.
  • Redak 6: Ispis izjave "Program je pokrenut".
  • Redak koda 7: CASE provjerava vrijednost izraza. U ovom slučaju, vrijednost varijable 'art_operation' je 'MULTIPLY'. Ova vrijednost sada će se tretirati kao selektor za ovu CASE izjavu.
  • Redak koda 10: Klauzula WHEN s vrijednošću 'MULTIPLY' podudara se s vrijednošću selektora, stoga će kontroler odabrati ovaj action_block i ispisat će poruku 'Množenje brojeva je: 275'.
  • Redak koda13: Označava kraj izjave CASE.
  • Redak koda 14: Ispis izjave "Program završen".

Izlaz koda:

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

TRAŽENI SLUČAJ Izjava

Izraz SEARCHED CASE sličan je izrazu CASE, umjesto korištenja selektora za odabir alternative, SEARCHED CASE izravno će imati izraz definiran u klauzuli WHEN.

  • Izvršit će se prva klauzula WHEN koja zadovoljava uvjet, a kontroler će preskočiti preostale alternative.

Sintaksa:

CASEWHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • U gornjoj sintaksi svaka klauzula WHEN ima zasebne i .
  • Izvršit će se klauzula WHEN za koju izraz vraća TRUE.
  • Blok 'ELSE' nije obavezan koji sadrži koji treba izvršiti kada nijedna od alternativa ne zadovoljava.
  • Oznaka 'END' označava kraj izjave CASE i obvezni je dio CASE.

Primjer 1: Aritmetički proračun pomoću pretraživanog slučaja

U ovom ćemo primjeru izvršiti aritmetički izračun između dva broja 55 i 5.

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

Objašnjenje koda:

  • Redak koda 2: Proglašavanje varijable 'a' tipom podataka 'BROJ' i inicijalizacija vrijednošću '55'.
  • Redak koda 3: Proglašavanje varijable 'b' tipom podataka 'BROJ' i inicijalizacija vrijednošću '5'.
  • Redak koda 4: Deklariranje varijable 'arth_operation' kao tip podataka veličine 'VARCHAR2' veličine 20 i inicijalizacija s vrijednošću 'DIVIDE'.
  • Redak 6: Ispis izjave "Program je pokrenut".
  • Redak koda 7: Izjava SEARCHED CASE započinje. Kôd od retka 8 do retka 13 preskače se jer se njihova vrijednost selektora (ADD, SUBTRACT, MULTIPLY) ne podudara s vrijednošću 'arth_operation'.
  • Redak koda 14: Izraz klauzule WHEN "arth_operation = 'DIVIDE'" zadovoljan i izraz vraća TRUE.
  • Redak koda 15: Izvršit će se Action_block klauzule WHEN i ispisat će se poruka "Podjela brojeva je: 11".
  • Linija koda 17: Označava kraj izjave CASE.
  • Redak koda 18: Ispis izjave "Program završen".

Izlaz koda:

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

Sažetak

TIP OPIS UPOTREBA

SLUČAJ

Slično izjavi IF-THEN-ELSIF. 'SELECTOR' se koristi za odabir alternativa umjesto logičkog izraza.

Koristi se za odabir između nekoliko mogućnosti pomoću 'SELECTOR'

PRETRAŽENI SLUČAJ

CASE izjava bez stvarnog 'SELECTOR'. Umjesto toga, sadrži stvarno stanje (koje procjenjuje na TRUE / FALSE) koje će odabrati alternative.

Uglavnom se bira između više od dvije mogućnosti.