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