CASE-verklaring in Oracle PL/SQL met voorbeelden

Wat is een CASE-verklaring?

Een CASE-instructie is vergelijkbaar met de IF-THEN-ELSIF-instructie, waarbij één alternatief wordt geselecteerd op basis van de voorwaarde uit de beschikbare opties.

  • De CASE-instructie gebruikt 'selector' in plaats van een Booleaanse expressie om de reeks te kiezen.
  • De waarde van de expressie in de CASE-instructie wordt behandeld als een selector.
  • De expressie kan van elk type zijn (rekenkunde, variabelen, enz.)
  • Aan elk alternatief wordt een bepaalde vooraf gedefinieerde waarde (selector) toegewezen, en het alternatief met een selectorwaarde die overeenkomt met de voorwaardelijke expressiewaarde wordt uitgevoerd.
  • In tegenstelling tot IF-THEN-ELSIF kan de CASE-instructie ook in SQL-instructies worden gebruikt.
  • ELSE-blok in de CASE-instructie bevat de reeks die moet worden uitgevoerd als geen van de alternatieven is geselecteerd.

Syntaxis

CASE (expression)
 WHEN <valuel> THEN action_blockl;
 WHEN <value2> THEN action_block2;
 WHEN <value3> THEN action_block3;
 ELSE action_block_default;
END CASE;
  • In de bovenstaande syntaxis retourneert de expressie een waarde die van elk type kan zijn (variabele, getal, enz.).
  • Elke 'WHEN'-clausule wordt behandeld als een alternatief dat dat wel heeft En .
  • De 'WHEN'-clausule die overeenkomt met de waarde van de expressie wordt geselecteerd, en de bijbehorende zal worden uitgevoerd.
  • 'ELSE'-blok is optioneel en bevat de dat moet worden uitgevoerd als geen van de alternatieven overeenkomt met de expressiewaarde.
  • De 'END' markeert het einde van de CASE-instructie en is een verplicht onderdeel van de CASE.

Voorbeeld 1: Rekenkundige berekening met behulp van Case

In dit voorbeeld gaan we een rekenkundige berekening uitvoeren tussen de getallen 55 en 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 Uitleg

  • Coderegel 2: De variabele 'a' declareren als gegevenstype 'NUMBER' en deze initialiseren met de waarde '55'.
  • Coderegel 3: De variabele 'b' declareren als gegevenstype 'NUMBER' en deze initialiseren met de waarde '5.'
  • Coderegel 4: De variabele 'arth_operation' declareren als gegevenstype 'VARCHAR2' met een grootte van 20 en deze initialiseren met de waarde 'MULTIPLY'.
  • Coderegel 6: Afdrukken van de verklaring “Programma gestart”.
  • Coderegel 7: CASE controleert de waarde van de expressie. In dit geval is de waarde van de variabele 'arth_operation' 'MULTIPLY'. Deze waarde wordt nu behandeld als een selector voor deze CASE-instructie.
  • Coderegel 10: De WHEN-component met de waarde 'MULTIPLY' komt overeen met de selectorwaarde, daarom selecteert de controller dit action_block en wordt het bericht 'Vermenigvuldiging van de getallen is: 275' afgedrukt.
  • Coderegel 13: markeert het einde van de CASE-instructie.
  • Coderegel14: Afdrukken van de verklaring “Programma voltooid”.

Code-uitvoer

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

ZOEKEN CASE Verklaring

De SEARCHED CASE-instructie is vergelijkbaar met de CASE-instructie. In plaats van de selector te gebruiken om het alternatief te selecteren, zal SEARCHED CASE direct de expressie hebben die is gedefinieerd in de WHEN-clausule.

  • De eerste WHEN-clausule die aan de voorwaarde voldoet, wordt uitgevoerd en de controller slaat de overige alternatieven over.

Syntaxis

CASE
WHEN <expression1> THEN action_blockl; 
WHEN <expression2> THEN action_block2; 
WHEN <expression3> THEN action_block3; 
ELSE action_block_default;
END CASE;
  • In de bovenstaande syntaxis heeft elke WHEN-clausule de afzonderlijke En .
  • De WHEN-clausule waarvoor de expressie TRUE retourneert, wordt uitgevoerd.
  • 'ELSE'-blok is optioneel en bevat de dat moet worden uitgevoerd als geen van de alternatieven voldoet.
  • De 'END' markeert het einde van de CASE-instructie en is een verplicht onderdeel van CASE.

Voorbeeld 1: Rekenkundige berekening met behulp van gezochte casus

In dit voorbeeld gaan we een rekenkundige berekening uitvoeren tussen de getallen 55 en 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 Uitleg

  • Coderegel 2: De variabele 'a' declareren als gegevenstype 'NUMBER' en deze initialiseren met de waarde '55'.
  • Coderegel 3: De variabele 'b' declareren als gegevenstype 'NUMBER' en deze initialiseren met de waarde '5'.
  • Coderegel 4: De variabele 'arth_operation' declareren als gegevenstype 'VARCHAR2' met een grootte van 20 en deze initialiseren met de waarde 'DIVIDE.'
  • Coderegel 6: Afdrukken van de verklaring “Programma gestart”.
  • Coderegel 7: SEARCHED CASE-instructie begint. De code van regel 8 tot regel 13 wordt overgeslagen omdat hun selectorwaarde (ADD, SUBTRACT, MULTIPLY) niet overeenkomt met de waarde van 'arth_operation'.
  • Coderegel 14: De WHEN-clausule-expressie “arth_operation = 'DIVIDE'” is voldaan en de expressie retourneert TRUE.
  • Coderegel 15: Action_block van de WHEN-clausule wordt uitgevoerd en het bericht 'Deling van de getallen is: 11' wordt afgedrukt.
  • Coderegel 17: Markeert het einde van de CASE-instructie.
  • Coderegel 18: Afdrukken van de verklaring “Programma voltooid”.

Code-uitvoer

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

Samenvatting

TYPE PRODUCTBESCHRIJVING GEBRUIK
CASE Soortgelijke ALS-DAN-ELSIF stelling. Er wordt een 'SELECTOR' gebruikt om de alternatieven te kiezen in plaats van de Booleaanse expressie. Wordt gebruikt om uit verschillende alternatieven te selecteren met behulp van 'SELECTOR'
GEZOCHT GEVAL CASE-instructie zonder daadwerkelijke 'SELECTOR'. In plaats daarvan bevat het de werkelijke voorwaarde (die evalueert als TRUE/FALSE) die de alternatieven selecteert. Meestal werd er uit meer dan twee alternatieven gekozen.