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. |