Kas ir CASE paziņojums?
CASE paziņojums ir līdzīgs paziņojumam IF-THEN-ELSIF, kas no pieejamajām opcijām izvēlas vienu alternatīvu, pamatojoties uz nosacījumu.
- CASE paziņojums secības izvēlei izmanto "selector", nevis Būla izteiksmi.
- Izteiksmes vērtība CASE paziņojumā tiks uzskatīta par atlasītāju.
- Izteiksme var būt jebkura veida (aritmētika, mainīgie utt.)
- Katrai alternatīvai tiek piešķirta noteikta iepriekš noteikta vērtība (selektors), un alternatīva ar selektora vērtību, kas atbilst nosacītās izteiksmes vērtībai, tiks izpildīta.
- Atšķirībā no IF-THEN-ELSIF, CASE paziņojumu var izmantot arī SQL priekšrakstos.
- ELSE bloks CASE paziņojumā satur secību, kas jāizpilda, kad nav izvēlēta neviena no alternatīvām.
Sintakse:
CASE (expression)WHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- Iepriekš minētajā sintaksē izteiksme atgriezīs vērtību, kas varētu būt jebkura veida (mainīgais, skaitlis utt.).
- Katra klauzula WHEN tiek uzskatīta par alternatīvu, kurai ir
un . - Tiks atlasīta klauzula WHEN, kas atbilst izteiksmes vērtībai, un tiks izpildīta atbilstošā
. - 'ELSE' bloks nav obligāts, kurā ir
, kas jāizpilda, ja neviena no alternatīvām neatbilst izteiksmes vērtībai. - “END” apzīmē CASE paziņojuma beigas, un tā ir obligāta CASE sastāvdaļa.
1. piemērs: Aritmētiskā aprēķināšana, izmantojot gadījumu
Šajā piemērā mēs veiksim aritmētisko aprēķinu starp diviem skaitļiem 55 un 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;/
Koda skaidrojums:
- 2. koda rindiņa: mainīgā “a” deklarēšana par “NUMBER” datu tipu un inicializēšana ar vērtību “55”.
- 3. koda rindiņa: mainīgā “b” deklarēšana par “NUMBER” datu tipu un inicializēšana ar vērtību “5.”
- 4. koda rindiņa: Mainīgā “arth_operation” deklarēšana par “VARCHAR2” datu veidu, kura lielums ir 20, un inicializēšana ar vērtību “MULTIPLY”.
- Kodu rinda 6: izdrukāt paziņojumu "Programma sākta".
- 7. koda rindiņa: CASE pārbauda izteiksmes vērtību. Šajā gadījumā mainīgā “arth_operation” vērtība ir “MULTIPLY”. Šī vērtība tagad tiks uzskatīta par atlasi šim CASE paziņojumam.
- 10. koda rindiņa: WHEN klauzula ar vērtību “MULTIPLY” atbilst atlasītāja vērtībai, tāpēc kontrolieris izvēlēsies šo action_block un izdrukās ziņojumu “Skaitļu reizināšana ir: 275”.
- Koda rindiņa13: atzīmē CASE paziņojuma beigas.
- Koda rindiņa14: paziņojuma "Programma pabeigta" izdrukāšana.
Koda izvade:
Program started.Multiplication of the numbers are: 275Program completed.
MEKLĒTĀ LIETAS Paziņojums
MEKLĒJUMA MEKLĒTAIS gadījums ir līdzīgs CASE paziņojumam, nevis izmantojot selektoru alternatīvas izvēlei, meklētajai lietai tieši būs WHEN klauzulā definētā izteiksme.
- Pirmā klauzula WHEN, kas atbilst nosacījumam, tiks izpildīta, un kontrolieris izlaidīs pārējās alternatīvas.
Sintakse:
CASEWHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- Iepriekš minētajā sintaksē katrai WHEN klauzulai ir atsevišķas
un . - Tiks izpildīta klauzula WHEN, kurai izteiksme atgriež TRUE.
- 'ELSE' bloks nav obligāts, kas satur
, kas jāizpilda, ja neviena no alternatīvām neatbilst. - “END” apzīmē CASE paziņojuma beigas, un tā ir obligāta CASE sastāvdaļa.
1. piemērs: Aritmētiskā aprēķināšana, izmantojot meklēto gadījumu
Šajā piemērā mēs veiksim aritmētisko aprēķinu starp diviem skaitļiem 55 un 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;/
Koda skaidrojums:
- 2. koda rindiņa: mainīgā “a” deklarēšana par “NUMBER” datu tipu un inicializēšana ar vērtību “55”.
- 3. koda rindiņa: mainīgā “b” deklarēšana par “NUMBER” datu tipu un inicializēšana ar vērtību “5”.
- Kodu rinda 4: Mainīgā “arth_operation” deklarēšana par “VARCHAR2” datu tipu, kura lielums ir 20, un inicializēšana ar vērtību “DIVIDE”.
- Kodu rinda 6: izdrukāt paziņojumu "Programma sākta".
- 7. koda rindiņa: sākas paziņojums MEKLĒTAIS LIETAS. Kods no 8. rindas līdz 13. rindai tiek izlaists, jo to atlasītāja vērtība (ADD, SUBTRACT, MULTIPLY) neatbilst “arth_operation” vērtībai.
- 14. koda rindiņa: WHEN klauzulas izteiksme "arth_operation = 'DIVIDE" "ir apmierināta, un izteiksme atgriež TRUE.
- 15. koda rinda: Tiks izpildīta klauzulas WHEN darbība_bloks, un tiks izdrukāts ziņojums “Skaitļu sadalījums ir: 11”.
- 17. koda rindiņa: atzīmē CASE paziņojuma beigas.
- 18. koda rindiņa: Pārskata “Programma pabeigta” izdrukāšana.
Koda izvade:
Program started.Division of the numbers are: 11Program completed.
Kopsavilkums
VEIDS | APRAKSTS | LIETOŠANA |
---|---|---|
LIETA |
Līdzīgi IF-THEN-ELSIF paziņojumam. Būla izteiksmes vietā alternatīvu izvēlei tiek izmantots 'SELECTOR'. |
Izmanto, lai izvēlētos no vairākām alternatīvām, izmantojot 'SELECTOR' |
MEKLĒTA LIETA |
CASE paziņojums bez faktiskā “SELECTOR”. Tā vietā tas satur faktisko stāvokli (kura vērtība ir PATIESA / PATIESA), kas atlasīs alternatīvas. |
Izmanto, lai pārsvarā izvēlētos no vairāk nekā divām alternatīvām. |