CASE-uttalelse i Oracle PL/SQL med eksempler
⚡ Smart oppsummering
En PL/SQL CASE-setning velger ett alternativ fra flere basert på en selektor, omtrent som IF-THEN-ELSIF, men tydeligere. En enkel CASE samsvarer med en selektorverdi, mens en søkt CASE evaluerer en betingelse i hver WHEN-klausul og kjører den første som er sann.
Hva er en CASE-erklæring?
En CASE-setning ligner på IF-THEN-ELSIF-setningen; den velger ett alternativ basert på en betingelse fra de tilgjengelige alternativene.
- En CASE-setning bruker en «selektor» i stedet for et boolsk uttrykk for å velge sekvensen.
- Verdien av uttrykket i CASE-setningen behandles som en selektor.
- Uttrykket kan være av en hvilken som helst type (aritmetikk, variabler osv.).
- Hvert alternativ tildeles en bestemt forhåndsdefinert verdi (selektor), og alternativet hvis selektorverdi samsvarer med verdien for det betingede uttrykket utføres.
- I motsetning til IF-THEN-ELSIF, kan CASE-setningen også brukes i SQL-setninger.
- ELSE-blokken i en CASE-setning inneholder sekvensen som skal utføres når ingen av alternativene er valgt.
syntax
CASE (expression) WHEN <value1> THEN action_block1; WHEN <value2> THEN action_block2; WHEN <value3> THEN action_block3; ELSE action_block_default; END CASE;
- I syntaksen ovenfor returnerer uttrykket en verdi som kan være av en hvilken som helst type.
- Hver «NÅR»-klausul er et alternativ som har en og en .
- 'WHEN'-klausulen hvis verdi samsvarer med uttrykket er valgt, og dens er henrettet.
- 'ELSE'-blokken er valgfri og inneholder å utføre når ingen alternativer matcher.
- 'END' markerer slutten på CASE-setningen og er en obligatorisk del av CASE.
Eksempel 1: Aritmetisk beregning ved bruk av CASE
I dette eksemplet gjør vi en aritmetisk beregning 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; /
Code Forklaring
- Code linje 2: Deklarerer variabelen 'a' som 'NUMBER' og initialiserer den med verdien '55'.
- Code linje 3: Deklarerer variabelen 'b' som 'NUMBER' og initialiserer den med verdien '5'.
- Code linje 4: Deklarerer variabelen 'arth_operation' som 'VARCHAR2' av størrelse 20 og initialiserer den med verdien 'MULTIPLY'.
- Code linje 6: Skriver ut setningen «Programmet startet».
- Code linje 7: CASE sjekker verdien av uttrykket. Her er verdien av 'arth_operation' 'MULTIPLY', som behandles som selektoren.
- Code linje 10: WHEN-klausulen med verdien 'MULTIPLY' samsvarer med velgeren, så kontrolleren velger denne handlingsblokken og skriver ut 'Multiplikasjon av tallene er: 275'.
- Code linje 13: Markerer slutten på CASE-setningen.
- Code linje 14: Skriver ut setningen «Program fullført».
Code Produksjon
Program started. Multiplication of the numbers are: 275 Program completed.
SØKT SAK Uttalelse
Den søkte CASE-setningen ligner på CASE-setningen, men i stedet for å bruke en velger til å velge alternativet, har den søkte CASE-setningen betingelsen definert direkte i WHEN-klausulen.
- Den første WHEN-klausulen som oppfyller betingelsen utføres, og kontrolleren hopper over de gjenværende alternativene.
syntax
CASE WHEN <expression1> THEN action_block1; WHEN <expression2> THEN action_block2; WHEN <expression3> THEN action_block3; ELSE action_block_default; END CASE;
- I syntaksen ovenfor har hver WHEN-klausul en separat og .
- WHEN-klausulen som uttrykket returnerer TRUE for, utføres.
- 'ELSE'-blokken er valgfri og inneholder å utføre når ingen av alternativene er oppfylt.
- 'END' markerer slutten på CASE-setningen og er en obligatorisk del av CASE.
Eksempel 1: Aritmetisk beregning ved bruk av søkt CASE
I dette eksemplet gjør vi en aritmetisk beregning 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; /
Code Forklaring
- Code linje 2: Deklarerer variabelen 'a' som 'NUMBER' og initialiserer den med verdien '55'.
- Code linje 3: Deklarerer variabelen 'b' som 'NUMBER' og initialiserer den med verdien '5'.
- Code linje 4: Deklarerer variabelen 'arth_operation' som 'VARCHAR2' av størrelse 20 og initialiserer den med verdien 'DIVIDE'.
- Code linje 6: Skriver ut setningen «Programmet startet».
- Code linje 7: Den søkte CASE-setningen begynner. Klausulene for ADD, SUBTRACT og MULTIPLY hoppes over, ettersom betingelsene deres ikke samsvarer med verdien til 'arth_operation'.
- Code linje 14: WHEN-klausuluttrykket «arth_operation = 'DIVIDE'» er oppfylt og returnerer TRUE.
- Code linje 15: Handlingsblokken til WHEN-klausulen utføres, og 'Divisjon av tallene er: 11' skrives ut.
- Code linje 17: Markerer slutten på CASE-setningen.
- Code linje 18: Skriver ut setningen «Program fullført».
Code Produksjon
Program started. Division of the numbers are: 11 Program completed.
Sammenligning av CASE og RECED CASE
Begge formene velger én gren, men de er forskjellige i hvordan grenen velges, som oppsummert nedenfor.
| typen | Tekniske beskrivelser | bruk |
|---|---|---|
| CASE | Ligner på HVIS-SÅ-ELSIF setning. En 'selektor' brukes til å velge alternativet i stedet for et boolsk uttrykk. | Brukes til å velge mellom flere alternativer ved hjelp av en velger. |
| SØKT SAK | En CASE-setning uten noen faktisk selektor. I stedet inneholder den betingelsen (som evalueres til SANN eller USANN) som velger alternativet. | Brukes til å velge mellom mer enn to alternativer, vanligvis med rekkeviddebetingelser. |

