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)WHENTHEN 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:
CASEWHENTHEN 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. |