Oracle PL / SQL: CASE-uttalande med exempel

Innehållsförteckning:

Anonim

Vad är CASE Statement?

Ett CASE-uttalande liknar IF-THEN-ELSIF-uttalandet som väljer ett alternativ baserat på tillståndet från de tillgängliga alternativen.

  • CASE-uttalande använder "selector" snarare än ett booleskt uttryck för att välja sekvensen.
  • Värdet på uttrycket i CASE-uttalandet 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 köras.
  • Till skillnad från IF-THEN-ELSIF kan CASE-uttalandet också användas i SQL-uttalanden.
  • ELSE-block i CASE-uttalande innehåller den sekvens som behöver köras när inget av alternativen har valts.

Syntax:

CASE (expression)WHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • I ovanstående syntax returnerar uttrycket ett värde som kan vara av vilken typ som helst (variabel, antal etc.).
  • Varje 'WHEN'-sats behandlas som ett alternativ som har och .
  • "NÄR" -satsen som matchar värdet som uttrycket kommer att väljas och motsvarande kommer att köras.
  • ELSE-blocket är valfritt som innehåller som måste köras när inget av alternativen matchar uttrycksvärdet.
  • Slutet markerar slutet på CASE-uttalandet och det är en obligatorisk del av CASE.

Exempel 1: Aritmetisk beräkning med Case

I det här exemplet ska vi göra aritmetisk beräkning mellan två nummer 55 och 5.

DECLAREa NUMBER :=55;b NUMBER :=5;arth_operation VARCHAR2(20) :='MULTIPLY’;BEGINdbms_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: Förklarar variabeln 'a' som 'NUMBER' datatyp och initialiserar den med värdet '55'.
  • Kodrad 3: Förklarar variabeln 'b' som 'NUMMER' datatyp och initierar den med värdet '5.'
  • Kodrad 4: Förklarar variabeln 'arth_operation' som 'VARCHAR2' datatyp av storlek 20 och initialiserar den med värdet 'MULTIPLY'.
  • Kodrad 6: Skriva ut påståendet "Programmet startade".
  • Kodrad 7: CASE kontrollerar uttryckets värde. I detta fall är värdet på variabeln 'arth_operation' 'MULTIPLY'. Detta värde kommer att behandlas som en väljare för detta CASE-uttalande nu.
  • Kodrad 10: NÄR satsen med värdet 'MULTIPLY' matchar med väljarvärdet, därför kommer styrenheten att välja detta åtgärdsblock och kommer att skriva ut meddelandet 'Multiplikation av siffrorna är: 275'.
  • Kodrad 13: Markerar slutet på CASE-uttalandet.
  • Kodrad 14: Skriva ut påståendet "Programmet slutfört".

Kodutgång:

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

SÖKT MÅL Uttalande

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

  • Den första NÄR-klausulen som uppfyller villkoren kommer att köras och kontrollenheten hoppar över de återstående alternativen.

Syntax:

CASEWHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • I ovanstående syntax har varje WHEN-sats separata och .
  • WHEN-satsen för vilken uttrycket returnerar SANT kommer att köras.
  • ELSE-blocket är valfritt som innehåller som måste köras när inget av alternativen uppfyller.
  • Slutet markerar slutet på CASE-uttalandet och det är en obligatorisk del av CASE.

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

I det här exemplet ska vi göra aritmetisk beräkning mellan två nummer 55 och 5.

DECLARE a NUMBER :=55;b NUMBER :=5;arth_operation VARCHAR2(20) :='DIVIDE';BEGINdbms_output.put_line(‘Program started.' );CASEWHEN 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: Förklarar variabeln 'a' som 'NUMBER' datatyp och initialiserar den med värdet '55'.
  • Kodrad 3: Förklarar variabeln 'b' som 'NUMMER' datatyp och initierar den med värdet '5'.
  • Kodrad 4: Deklarerar variabeln 'arth_operation' som 'VARCHAR2' datatyp av storlek 20 och initialiserar den med värdet 'DIVIDE'.
  • Kodrad 6: Skriva ut påståendet "Programmet startade".
  • Kodrad 7: SÖKT CASE-uttalande börjar. Koden från rad 8 till rad 13 hoppas över eftersom deras väljarvärde (ADD, SUBTRACT, MULTIPLY) inte matchar värdet "arth_operation".
  • Kodrad 14: NÄR satsuttrycket "arth_operation = 'DIVIDE'" uppfylls och uttrycket returnerar SANT.
  • Kodrad 15: Action_block av WHEN-klausulen kommer att köras och meddelandet 'Uppdelningen av siffrorna är: 11' kommer att skrivas ut.
  • Kodrad 17: Markerar slutet på CASE-uttalandet.
  • Kodrad 18: Skriva ut påståendet "Programmet slutfört".

Kodutgång:

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

Sammanfattning

TYP BESKRIVNING ANVÄNDANDE

FALL

Liknar IF-THEN-ELSIF uttalande. En 'VÄLJARE' 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-uttalande utan egentlig 'SELECTOR'. Istället innehåller den det faktiska tillståndet (som utvärderas till SANT / FALSK) som väljer alternativen.

Används för att välja mellan mer än två alternativ mest.