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)WHENTHEN 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:
CASEWHENTHEN 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. |