Oracle PL / SQL: CASE-instructie met voorbeelden

Inhoudsopgave:

Anonim

Wat is een CASE-verklaring?

Een CASE-instructie is vergelijkbaar met de IF-THEN-ELSIF-instructie die één alternatief selecteert op basis van de voorwaarde uit de beschikbare opties.

  • CASE-instructie gebruikt "selector" in plaats van een Booleaanse uitdrukking om de reeks te kiezen.
  • De waarde van de uitdrukking in de CASE-instructie wordt behandeld als een selector.
  • De uitdrukking kan van elk type zijn (rekenkundig, variabelen, enz.)
  • Elk alternatief krijgt een bepaalde vooraf gedefinieerde waarde (selector) toegewezen, en het alternatief met 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 CASE-instructie bevat de reeks die moet worden uitgevoerd als geen van de alternatieven is geselecteerd.

Syntaxis:

CASE (expression)WHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • In de bovenstaande syntaxis retourneert de uitdrukking een waarde die van elk type kan zijn (variabele, getal, enz.).
  • Elke 'WHEN'-clausule wordt behandeld als een alternatief met en .
  • De 'WHEN'-clausule die overeenkomt met de waarde van de uitdrukking wordt geselecteerd en het bijbehorende wordt uitgevoerd.
  • 'ELSE' blok is optioneel en bevat de die 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 gebruikmaking van hoofdletters / kleine letters

In dit voorbeeld gaan we rekenkundige berekeningen maken tussen twee getallen 55 en 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;/

Code Verklaring:

  • Coderegel 2: de variabele 'a' declareren als 'NUMBER' datatype en deze initialiseren met waarde '55'.
  • Coderegel 3: de variabele 'b' declareren als 'NUMBER' datatype en deze initialiseren met waarde '5'.
  • Coderegel 4: Declaratie van de variabele 'arth_operation' als 'VARCHAR2' datatype van grootte 20 en initialiseren met de waarde 'MULTIPLY'.
  • Coderegel 6: Afdrukken van het statement "Programma gestart".
  • Coderegel 7: CASE controleert de waarde van de uitdrukking. 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-clausule met de waarde 'MULTIPLY' komt overeen met de selectorwaarde, daarom zal de controller dit action_block selecteren en het bericht 'Vermenigvuldiging van de getallen zijn: 275' afdrukken.
  • Code line13: Markeert het einde van de CASE-instructie.
  • Code line14: Afdrukken van het statement "Programma voltooid".

Code-uitvoer:

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

SEARCHED CASE-verklaring

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

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

Syntaxis:

CASEWHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • In de bovenstaande syntaxis heeft elke WHEN-clausule de afzonderlijke en .
  • De WHEN-component waarvoor de uitdrukking TRUE retourneert, wordt uitgevoerd.
  • 'ELSE' blok is optioneel en bevat het 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 hoofdletters

In dit voorbeeld gaan we rekenkundige berekeningen maken tussen twee getallen 55 en 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;/

Code Verklaring:

  • Coderegel 2: de variabele 'a' declareren als 'NUMBER' datatype en deze initialiseren met waarde '55'.
  • Coderegel 3: de variabele 'b' declareren als 'NUMBER' datatype en deze initialiseren met de waarde '5'.
  • Coderegel 4: Declaratie van de variabele 'arth_operation' als 'VARCHAR2' datatype van grootte 20 en initialiseren met de waarde 'DIVIDE.'
  • Coderegel 6: Afdrukken van het statement "Programma gestart".
  • Coderegel 7: SEARCHED CASE-instructie begint. De code van regel8 tot regel 13 wordt overgeslagen omdat hun selectorwaarde (ADD, SUBTRACT, MULTIPLY) niet overeenkomt met de waarde van 'arth_operation'.
  • Coderegel 14: De WHEN-clausule-uitdrukking "arth_operation = 'DIVIDE'" is voldaan en de uitdrukking retourneert TRUE.
  • Coderegel 15: Action_block van de WHEN-clausule wordt uitgevoerd en het bericht 'Division of the numbers are: 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: 11Program completed.

Overzicht

TYPE OMSCHRIJVING GEBRUIK

GEVAL

Vergelijkbaar met de IF-THEN-ELSIF-instructie. Een 'SELECTOR' wordt gebruikt om de alternatieven te kiezen in plaats van een Booleaanse uitdrukking.

Wordt gebruikt om uit verschillende alternatieven te kiezen met 'SELECTOR'

GEZOCHT CASE

CASE-instructie zonder echte 'SELECTOR'. In plaats daarvan bevat het de werkelijke toestand (die evalueert naar WAAR / ONWAAR) die de alternatieven selecteert.

Meestal gebruikt om uit meer dan twee alternatieven te kiezen.