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.