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. |