CASE-uttalande i Oracle PL/SQL med exempel

Vad är CASE Statement?

En CASE-sats liknar IF-THEN-ELSIF-satsen som väljer ett alternativ baserat på villkoret från de tillgängliga alternativen.

  • CASE-satsen använder "selektor" snarare än ett booleskt uttryck för att välja sekvensen.
  • Värdet på uttrycket i CASE-satsen kommer att behandlas som en väljare.
  • Uttrycket kan vara av vilken typ som helst (aritmetik, variabler, etc.)
  • Varje alternativ tilldelas ett visst fördefinierat värde (väljare), och alternativet med väljarvärde som matchar det villkorliga uttrycksvärdet kommer att exekveras.
  • Till skillnad från IF-THEN-ELSIF kan CASE-satsen också användas i SQL-satser.
  • ELSE-blocket i CASE-satsen innehåller sekvensen som måste exekveras när inget av alternativen har valts.

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 ovanstående syntax kommer uttrycket att returnera ett värde som kan vara av vilken typ som helst (variabel, tal, etc.).
  • Varje "WHEN"-sats behandlas som ett alternativ som har och .
  • 'WHEN'-satsen som matchar värdet som uttrycket kommer att väljas och motsvarande kommer att verkställas.
  • 'ANDES'-blocket är valfritt som håller som måste köras när inget av alternativen matchar uttrycksvärdet.
  • 'END' markerar slutet på CASE-satsen, och det är en obligatorisk del av CASE.

Exempel 1: Aritmetisk beräkning med case

I det här exemplet ska vi göra en aritmetisk beräkning mellan två siffror 55 och 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;
/

Kodförklaring

  • Kodrad 2: Deklarerar variabeln 'a' som datatyp 'NUMBER' och initierar den med värdet '55'.
  • Kodrad 3: Deklarerar variabeln 'b' som datatyp 'NUMBER' och initierar den med värdet '5.'
  • Kodrad 4: Deklarerar variabeln 'arth_operation' som datatyp 'VARCHAR2' av storlek 20 och initierar den med värdet 'MULTIPLY'.
  • Kodrad 6: Skriver ut satsen "Program started".
  • Kodrad 7: CASE kontrollerar uttryckets värde. I det här fallet är värdet på variabeln 'arth_operation' 'MULTIPLY'. Detta värde kommer att behandlas som en väljare för denna CASE-sats nu.
  • Kodrad 10: WHEN-satsen med värdet 'MULTIPLY' matchar med väljarvärdet, så styrenheten väljer detta action_block och skriver ut meddelandet 'Multiplicering av siffrorna är: 275'.
  • Kodrad 13: Markerar slutet på CASE-satsen.
  • Kodrad 14: Skriver ut påståendet "Program completed".

Kodutgång

Program started.
Multiplication of the numbers are: 275
Program completed.

SÖKT FALL Uttalande

SEARCHED CASE-satsen liknar CASE-satsen, snarare än att använda väljaren för att välja alternativet, SEARCHED CASE kommer direkt att ha uttrycket definierat i WHEN-satsen.

  • Den första WHEN-satsen som uppfyller villkoret kommer att exekveras, och styrenheten kommer att hoppa över de återstående alternativen.

syntax

CASE
WHEN <expression1> THEN action_blockl; 
WHEN <expression2> THEN action_block2; 
WHEN <expression3> THEN action_block3; 
ELSE action_block_default;
END CASE;
  • I ovanstående syntax har varje WHEN-sats separat och .
  • WHEN-satsen för vilken uttrycket returnerar TRUE kommer att exekveras.
  • 'ANDES'-blocket är valfritt som håller som måste utföras när inget av alternativen uppfyller.
  • 'END' markerar slutet på CASE-satsen och det är en obligatorisk del av CASE.

Exempel 1: Aritmetisk beräkning med sökt fall

I det här exemplet ska vi göra en aritmetisk beräkning mellan två siffror 55 och 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;
/

Kodförklaring

  • Kodrad 2: Deklarerar variabeln 'a' som datatyp 'NUMBER' och initierar den med värdet '55'.
  • Kodrad 3: Deklarerar variabeln 'b' som datatyp 'NUMBER' och initierar den med värdet '5'.
  • Kodrad 4: Deklarerar variabeln 'arth_operation' som datatyp 'VARCHAR2' av storlek 20 och initierar den med värdet 'DIVIDE'.
  • Kodrad 6: Skriver ut satsen "Program started".
  • Kodrad 7: SEARCHED CASE-satsen börjar. Koden från rad 8 till rad 13 hoppas över eftersom deras väljarvärde (ADD, SUBTRACT, MULTIPLY) inte matchar värdet för 'arth_operation'.
  • Kodrad 14: WHEN-satsuttrycket "arth_operation = 'DIVIDE'" är uppfyllt och uttrycket returnerar TRUE.
  • Kodrad 15: Action_block för WHEN-satsen kommer att exekveras, och meddelandet 'Division of the numbers are: 11' kommer att skrivas ut.
  • Kodrad 17: Markerar slutet på CASE-satsen.
  • Kodrad 18: Skriver ut meddelandet "Program completed".

Kodutgång

Program started.
Division of the numbers are: 11
Program completed.

Sammanfattning

TYP BESKRIVNING ANVÄNDANDE
CASE Liknar OM-DÅ-ELSIF påstående. En 'SELECTOR' används för att välja alternativ istället för booleskt uttryck. Används för att välja mellan flera alternativ med "SELECTOR"
SÖKT FALL CASE-sats utan egentlig 'SELECTOR'. Istället innehåller den det faktiska tillståndet (som utvärderas till TRUE/FALSE) som kommer att välja alternativen. Används för att välja mellan mer än två alternativ oftast.