Oracle PL / SQL: CASE-erklæring med eksempler

Indholdsfortegnelse:

Anonim

Hvad er CASE-erklæring?

En CASE-erklæring svarer til IF-THEN-ELSIF-sætningen, der vælger et alternativ baseret på tilstanden fra de tilgængelige muligheder.

  • CASE-sætning bruger "selector" snarere end et boolsk udtryk til at vælge sekvensen.
  • Værdien af ​​udtrykket i CASE-sætningen behandles som en vælger.
  • Udtrykket kunne være af enhver type (aritmetik, variabler osv.)
  • Hvert alternativ tildeles en bestemt foruddefineret værdi (vælger), og alternativet med vælgerværdi, der matcher den betingede udtryksværdi, bliver udført.
  • I modsætning til IF-THEN-ELSIF kan CASE-sætningen også bruges i SQL-sætninger.
  • ELSE-blok i CASE-sætning indeholder den rækkefølge, der skal udføres, når ingen af ​​alternativerne blev valgt.

Syntaks:

CASE (expression)WHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • I ovenstående syntaks returnerer udtrykket en værdi, der kan være af enhver type (variabel, antal osv.).
  • Hver 'NÅ' -klausul behandles som et alternativ, der har og .
  • Den 'NÅR' -klausul, der matcher værdien som udtrykets, vælges, og den tilsvarende udføres.
  • 'ELSE' -blokken er valgfri, der indeholder , der skal udføres, når ingen af ​​alternativerne matcher ekspressionsværdien.
  • 'SLUT' markerer slutningen af ​​CASE-erklæringen, og det er en obligatorisk del af CASE.

Eksempel 1: Aritmetisk beregning ved hjælp af sag

I dette eksempel skal vi foretage aritmetisk beregning mellem to tal 55 og 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;/

Kode Forklaring:

  • Kodelinje 2: Erklærer variablen 'a' som 'NUMBER' datatype og initialiserer den med værdien '55'.
  • Kodelinje 3: Erklæring af variablen 'b' som 'NUMBER' datatype og initialisering med værdien '5.'
  • Kodelinje 4: Erklæring af variablen 'arth_operation' som 'VARCHAR2' datatype i størrelse 20 og initialisering med værdien 'MULTIPLY'.
  • Kodelinje 6: Udskrivning af udsagnet "Program startet".
  • Kodelinje 7: CASE kontrollerer værdien af ​​udtrykket. I dette tilfælde er værdien af ​​variablen 'arth_operation' 'MULTIPLY'. Denne værdi vil blive behandlet som en vælger til denne CASE-sætning nu.
  • Kodelinje 10: NÅR-sætningen med værdien 'MULTIPLY' stemmer overens med vælgerens værdi, derfor vælger controller denne action_block og udskriver beskeden 'Multiplikation af numrene er: 275'.
  • Kodelinje 13: Markerer slutningen af ​​CASE-erklæringen.
  • Kodelinje 14: Udskrivning af udsagnet "Programmet afsluttet".

Kodeoutput:

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

SØGET SAG Erklæring

SEARCHED CASE-sætningen svarer til CASE-sætningen, snarere end at bruge vælgeren til at vælge alternativet, vil SEARCHED CASE direkte have udtrykket defineret i WHEN-klausulen.

  • Den første WHEN-klausul, der opfylder betingelsen, udføres, og controlleren springer de resterende alternativer over.

Syntaks:

CASEWHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • I ovenstående syntaks har hver WHEN-sætning den separate og .
  • WHEN-klausulen, som udtrykket returnerer SAND til, udføres.
  • 'ELSE' -blok er valgfri, der indeholder , der skal udføres, når ingen af ​​alternativerne opfylder.
  • 'SLUT' markerer slutningen af ​​CASE-erklæringen, og det er en obligatorisk del af CASE.

Eksempel 1: Aritmetisk beregning ved hjælp af søgte sager

I dette eksempel skal vi foretage aritmetisk beregning mellem to tal 55 og 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;/

Kode Forklaring:

  • Kodelinje 2: Erklærer variablen 'a' som 'NUMBER' datatype og initialiserer den med værdien '55'.
  • Kodelinje 3: Erklærer variablen 'b' som 'NUMBER' datatype og initialiserer den med værdien '5'.
  • Kodelinje 4: Erklærer variablen 'arth_operation' som 'VARCHAR2' datatype i størrelse 20 og initialiserer den med værdien 'DIVIDE'.
  • Kodelinje 6: Udskrivning af udsagnet "Program startet".
  • Kodelinje 7: SEARCHED CASE-erklæring begynder. Koden fra linje 8 til linje 13 springes over, da deres vælgerværdi (TILFØJ, UNDTAG, FLER) ikke stemmer overens med værdien 'arth_operation'.
  • Kodelinje 14: NÅR sætningen udtryk "arth_operation = 'DIVIDE'" er opfyldt, og udtrykket returnerer SAND.
  • Kodelinje 15: Action_block af WHEN-klausulen udføres, og meddelelsen 'Opdeling af numrene er: 11' udskrives.
  • Kodelinje 17: Markerer afslutningen på CASE-erklæringen.
  • Kodelinje 18: Udskrivning af udsagnet "Program afsluttet".

Kodeoutput:

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

Resumé

TYPE BESKRIVELSE BRUG

SAG

Svarende til IF-THEN-ELSIF-erklæring. En 'VÆLGER' bruges til at vælge alternativer i stedet for boolsk udtryk.

Bruges til at vælge mellem flere alternativer ved hjælp af 'SELECTOR'

SØGT SAG

CASE-sætning uden egentlig 'SELECTOR'. I stedet indeholder den den faktiske tilstand (som evalueres til SAND / FALSK), der vælger alternativerne.

Bruges til at vælge mellem mere end to alternativer.