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.

Oppsummer dette innlegget med: