Hva er CASE Statement?
En CASE-setning ligner IF-THEN-ELSIF-setningen som velger ett alternativ basert på tilstanden fra de tilgjengelige alternativene.
- CASE-setningen bruker "selector" i stedet for et boolsk uttrykk for å velge sekvensen.
- Verdien av uttrykket i CASE-setningen blir behandlet som en velger.
- Uttrykket kan være av hvilken som helst type (aritmetikk, variabler osv.)
- Hvert alternativ er tilordnet en bestemt forhåndsdefinert verdi (velger), og alternativet med velgerverdi som samsvarer med den betingede uttrykksverdien blir utført.
- I motsetning til IF-THEN-ELSIF, kan CASE-setningen også brukes i SQL-setninger.
- ELSE-blokkering i CASE-setning inneholder sekvensen som må utføres når ingen av alternativene ble valgt.
Syntaks:
CASE (expression)WHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- I syntaksen ovenfor vil uttrykket returnere en verdi som kan være av hvilken som helst type (variabel, tall osv.).
- Hver 'WHEN'-ledd behandles som et alternativ som har
og . - "NÅR" -satsen som samsvarer med verdien som uttrykket, blir valgt, og den tilsvarende
vil bli utført. - ELSE-blokken er valgfri som inneholder
som må utføres når ingen av alternativene samsvarer med uttrykksverdien. - 'SLUTT' markerer slutten på CASE-uttalelsen, og det er en obligatorisk del av CASE.
Eksempel 1: Aritmetisk beregning ved bruk av Case
I dette eksemplet skal vi gjøre aritmetisk beregning mellom to tall 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 variabelen 'a' som 'NUMBER' datatype og initialiserer den med verdien '55'.
- Kodelinje 3: Erklærer variabelen 'b' som 'NUMBER' datatype og initialiserer den med verdien '5.'
- Kodelinje 4: Deklarerer variabelen 'arth_operation' som 'VARCHAR2' datatype størrelse 20 og initialiserer den med verdien 'MULTIPLY'.
- Kodelinje 6: Utskrift av setningen "Programmet startet".
- Kodelinje 7: CASE sjekker verdien av uttrykket. I dette tilfellet er verdien av variabelen 'arth_operation' 'MULTIPLY'. Denne verdien vil bli behandlet som en velger for denne CASE-setningen nå.
- Kodelinje 10: NÅR setningen med verdien 'MULTIPLY' samsvarer med velgerverdien, vil derfor kontrolleren velge denne handlingsblokken og skrive ut meldingen 'Multiplikasjon av tallene er: 275'.
- Kodelinje13: Markerer slutten på CASE-setningen.
- Kodelinje 14: Utskrift av utsagnet "Program fullført".
Kodeutgang:
Program started.Multiplication of the numbers are: 275Program completed.
SØKET SAK Uttalelse
SEARCHED CASE-setningen ligner CASE-setningen, i stedet for å bruke velgeren til å velge alternativet, vil SEARCHED CASE direkte ha uttrykket definert i WHEN-setningen.
- Den første NÅR-klausulen som oppfyller betingelsen vil bli utført, og kontrolleren hopper over de gjenværende alternativene.
Syntaks:
CASEWHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- I den ovennevnte syntaksen har hver WHEN-ledd separate
og . - WHEN-setningen som uttrykket returnerer SANN for, blir utført.
- ELSE-blokken er valgfri som inneholder
som må utføres når ingen av alternativene tilfredsstiller. - 'SLUTT' markerer slutten på CASE-setningen, og det er en obligatorisk del av CASE.
Eksempel 1: Aritmetisk beregning ved hjelp av søkt sak
I dette eksemplet skal vi gjøre aritmetisk beregning mellom to tall 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 variabelen 'a' som 'NUMBER' datatype og initialiserer den med verdien '55'.
- Kodelinje 3: Erklærer variabelen 'b' som 'NUMBER' datatype og initialiserer den med verdien '5'.
- Kodelinje 4: Erklærer variabelen 'arth_operation' som 'VARCHAR2' datatype av størrelse 20 og initialiserer den med verdien 'DIVIDE'.
- Kodelinje 6: Utskrift av setningen "Programmet startet".
- Kodelinje 7: SØKET CASE-utsagn begynner. Koden fra linje 8 til linje 13 blir hoppet over da deres velgerverdi (ADD, SUBTRACT, MULTIPLY) ikke samsvarer med verdien til 'arth_operation'.
- Kodelinje 14: NÅR setningsuttrykket "arth_operation = 'DIVIDE'" er tilfreds og uttrykket returnerer SANT.
- Kodelinje 15: Handlingsblokk av WHEN-setningen vil bli utført, og meldingen 'Inndeling av tallene er: 11' vil bli skrevet ut.
- Kodelinje 17: Markerer slutten av CASE-setningen.
- Kodelinje 18: Utskrift av utsagnet "Program fullført".
Kodeutgang:
Program started.Division of the numbers are: 11Program completed.
Sammendrag
TYPE | BESKRIVELSE | BRUK |
---|---|---|
SAK |
I likhet med IF-THEN-ELSIF uttalelse. En 'SELECTOR' brukes til å velge alternativ i stedet for boolsk uttrykk. |
Brukes til å velge mellom flere alternativer ved hjelp av 'SELECTOR' |
SØKT SAK |
CASE-setning uten egentlig 'SELECTOR'. I stedet inneholder den den faktiske tilstanden (som evalueres til SANT / FALSK) som vil velge alternativene. |
Brukes for det meste å velge mellom mer enn to alternativer. |