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

Hvad er CASE Statement?

En CASE-sætning ligner IF-THEN-ELSIF-sætningen, der vælger et alternativ baseret på betingelsen fra de tilgængelige muligheder.

  • CASE-sætning bruger "selektor" i stedet for et boolsk udtryk til at vælge sekvensen.
  • Værdien af ​​udtrykket i CASE-sætningen vil blive behandlet som en vælger.
  • Udtrykket kan være af enhver type (aritmetik, variable osv.)
  • Hvert alternativ er tildelt en bestemt foruddefineret værdi (selektor), og alternativet med vælgerværdi, der matcher den betingede udtryksværdi, vil blive udført.
  • I modsætning til IF-THEN-ELSIF kan CASE-sætningen også bruges i SQL-sætninger.
  • ELSE-blok i CASE-sætningen indeholder den sekvens, der skal udføres, når ingen af ​​alternativerne blev valgt.

Syntaks

CASE (expression)
 WHEN <valuel> THEN action_blockl;
 WHEN <value2> THEN action_block2;
 WHEN <value3> THEN action_block3;
 ELSE action_block_default;
END CASE;
  • I ovenstående syntaks vil udtrykket returnere en værdi, der kunne være af enhver type (variabel, tal osv.).
  • Hver "WHEN"-klausul behandles som et alternativ, der har og .
  • 'WHEN'-sætningen, som matcher værdien som udtrykkets værdi, vil blive valgt, og den tilsvarende vil blive udført.
  • 'ELSE'-blok er valgfri, som holder der skal udføres, når ingen af ​​alternativerne matcher udtryksværdien.
  • 'SLUT' markerer slutningen af ​​CASE-erklæringen, og det er en obligatorisk del af CASE.

Eksempel 1: Aritmetisk beregning ved hjælp af kasus

I dette eksempel skal vi lave en aritmetisk beregning mellem to tal 55 og 5.

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

Kode Forklaring

  • Kodelinje 2: Erklæring af variablen 'a' som 'NUMBER' datatype og initialisering 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 af størrelse 20 og initialisering med værdien 'MULTIPLY'.
  • Kodelinje 6: Udskrivning af erklæringen "Program started".
  • 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 for denne CASE-sætning nu.
  • Kodelinje 10: WHEN-sætningen med værdien 'MULTIPLY' stemmer overens med vælgerværdien, derfor vil controlleren vælge denne action_block og udskrive meddelelsen 'Multiplikation af tallene er: 275'.
  • Kodelinje13: Markerer slutningen af ​​CASE-sætningen.
  • Kodelinje14: Udskrivning af erklæringen "Program gennemført".

Kode output

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

SØGTE SAG Udtalelse

SEARCHED CASE-sætningen ligner CASE-sætningen, i stedet for at bruge vælgeren til at vælge alternativet, vil SEARCHED CASE direkte have udtrykket defineret i WHEN-sætningen.

  • Den første WHEN-klausul, der opfylder betingelsen, vil blive udført, og controlleren vil springe de resterende alternativer over.

Syntaks

CASE
WHEN <expression1> THEN action_blockl; 
WHEN <expression2> THEN action_block2; 
WHEN <expression3> THEN action_block3; 
ELSE action_block_default;
END CASE;
  • I ovenstående syntaks har hver WHEN-sætning den separate og .
  • WHEN-sætningen, for hvilken udtrykket returnerer TRUE, vil blive udført.
  • 'ELSE'-blok er valgfri, som holder 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 tilfælde

I dette eksempel skal vi lave en aritmetisk beregning mellem to tal 55 og 5.

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

Kode Forklaring

  • Kodelinje 2: Erklæring af variablen 'a' som 'NUMBER' datatype og initialisering 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 af størrelse 20 og initialisering af den med værdien 'DIVIDE'.
  • Kodelinje 6: Udskrivning af erklæringen "Program started".
  • Kodelinje 7: SEARCHED CASE-sætning begynder. Koden fra linje 8 til linje 13 springes over, da deres vælgerværdi (ADD, SUBTRACT, MULTIPLY) ikke stemmer overens med værdien af ​​'arth_operation'.
  • Kodelinje 14: WHEN-udtrykket "arth_operation = 'DIVIDE'" er opfyldt, og udtrykket returnerer TRUE.
  • Kodelinje 15: Action_block i WHEN-sætningen vil blive udført, og meddelelsen 'Division of the numbers are: 11' vil blive udskrevet.
  • Kodelinje 17: Markerer slutningen af ​​CASE-sætningen.
  • Kodelinje 18: Udskrivning af erklæringen "Program gennemført".

Kode output

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

Resumé

TYPE BESKRIVELSE USAGE
CASE Svarende til HVIS-SÅ-ELSIF udmelding. En 'SELECTOR' bruges til at vælge alternativerne i stedet for boolesk udtryk. Bruges til at vælge mellem flere alternativer ved hjælp af 'SELECTOR'
SØGTE SAG CASE-sætning uden egentlig 'SELECTOR'. I stedet indeholder den den faktiske tilstand (som evalueres til SAND/FALSK), som vil vælge alternativerne. Bruges for det meste at vælge mellem mere end to alternativer.