CASE-uttalelse i Oracle PL/SQL med eksempler
Hva er CASE Statement?
En CASE-setning ligner på IF-THEN-ELSIF-setningen som velger ett alternativ basert på betingelsen fra de tilgjengelige alternativene.
- CASE-setningen bruker "selektor" i stedet for et boolsk uttrykk for å velge sekvensen.
- Verdien av uttrykket i CASE-setningen vil bli behandlet som en velger.
- Uttrykket kan være av hvilken som helst type (aritmetikk, variabler osv.)
- Hvert alternativ er tildelt en bestemt forhåndsdefinert verdi (selektor), og alternativet med velgerverdi som samsvarer med den betingede uttrykksverdien vil bli utført.
- I motsetning til IF-THEN-ELSIF, kan CASE-setningen også brukes i SQL-setninger.
- ELSE-blokken i CASE-setningen inneholder sekvensen som må utføres når ingen av alternativene ble valgt.
syntax
CASE (expression) WHEN <valuel> THEN action_blockl; WHEN <value2> THEN action_block2; WHEN <value3> 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'-klausul behandles som et alternativ som har og .
- 'WHEN'-leddet som samsvarer med verdien som uttrykket vil bli valgt, og det tilsvarende vil bli utført.
- 'ELSE'-blokken er valgfri som holder som må utføres når ingen av alternativene samsvarer med uttrykksverdien.
- 'END' markerer slutten på CASE-setningen, og det er en obligatorisk del av CASE.
Eksempel 1: Aritmetisk beregning ved bruk av kasus
I dette eksemplet skal vi gjøre aritmetiske beregninger mellom to tall 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: Deklarerer variabelen 'a' som 'NUMBER' datatype og initialiserer den med verdien '55'.
- Kodelinje 3: Deklarerer 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 'MULTIPLY'.
- Kodelinje 6: Skriver ut setningen "Program 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: WHEN-leddet med verdien 'MULTIPLY' samsvarer med velgerverdien, derfor vil kontrolleren velge denne action_block og skrive ut meldingen 'Multiplisering av tallene er: 275'.
- Kodelinje13: Markerer slutten på CASE-setningen.
- Kodelinje14: Skriver ut setningen "Program fullført".
Kodeutgang
Program started. Multiplication of the numbers are: 275 Program completed.
SØKT SAK Uttalelse
SEARCHED CASE-setningen ligner på CASE-setningen, i stedet for å bruke velgeren til å velge alternativet, vil SEARCHED CASE direkte ha uttrykket definert i WHEN-leddet.
- Den første WHEN-klausulen som tilfredsstiller betingelsen vil bli utført, og kontrolleren vil hoppe over de gjenværende alternativene.
syntax
CASE WHEN <expression1> THEN action_blockl; WHEN <expression2> THEN action_block2; WHEN <expression3> THEN action_block3; ELSE action_block_default; END CASE;
- I syntaksen ovenfor har hver WHEN-klausul den separate og .
- WHEN-leddet som uttrykket returnerer TRUE for vil bli utført.
- 'ELSE'-blokken er valgfri som holder som må utføres når ingen av alternativene tilfredsstiller.
- 'END' markerer slutten på CASE-setningen, og det er en obligatorisk del av CASE.
Eksempel 1: Aritmetisk beregning ved hjelp av søkte kasus
I dette eksemplet skal vi gjøre aritmetiske beregninger mellom to tall 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: Deklarerer variabelen 'a' som 'NUMBER' datatype og initialiserer den med verdien '55'.
- Kodelinje 3: Deklarerer variabelen 'b' som 'NUMBER' datatype og initialiserer den med verdien '5'.
- Kodelinje 4: Deklarerer variabelen 'arth_operation' som 'VARCHAR2'-datatype av størrelse 20 og initialiserer den med verdien 'DIVIDE'.
- Kodelinje 6: Skriver ut setningen "Program startet".
- Kodelinje 7: SEARCHED CASE-setningen begynner. Koden fra linje 8 til linje 13 hoppes over siden deres velgerverdi (ADD, SUBTRACT, MULTIPLY) ikke samsvarer med verdien til 'arth_operation'.
- Kodelinje 14: WHEN-klausuluttrykket "arth_operation = 'DIVIDE'" er oppfylt og uttrykket returnerer TRUE.
- Kodelinje 15: Action_block for WHEN-klausulen vil bli utført, og meldingen 'Inndeling av tallene er: 11' vil bli skrevet ut.
- Kodelinje 17: Markerer slutten på CASE-setningen.
- Kodelinje 18: Skriver ut erklæringen "Program fullført".
Kodeutgang
Program started. Division of the numbers are: 11 Program completed.
Sammendrag
TYPE | BESKRIVELSE | BRUK |
---|---|---|
CASE | Lik HVIS-SÅ-ELSIF uttalelse. En 'SELECTOR' brukes til å velge alternativene i stedet for boolsk uttrykk. | Brukes til å velge mellom flere alternativer ved å bruke 'SELECTOR' |
SØKT SAK | CASE-setning uten faktisk 'SELECTOR'. I stedet inneholder den den faktiske tilstanden (som evalueres til TRUE/FALSE) som vil velge alternativene. | Brukes for det meste å velge mellom mer enn to alternativer. |