Qu'est-ce que la déclaration CASE?
Une instruction CASE est similaire à l'instruction IF-THEN-ELSIF qui sélectionne une alternative en fonction de la condition parmi les options disponibles.
- L'instruction CASE utilise "selector" plutôt qu'une expression booléenne pour choisir la séquence.
- La valeur de l'expression dans l'instruction CASE sera traitée comme un sélecteur.
- L'expression peut être de n'importe quel type (arithmétique, variables, etc.)
- Chaque alternative est assignée avec une certaine valeur prédéfinie (sélecteur), et l'alternative avec une valeur de sélecteur qui correspond à la valeur de l'expression conditionnelle sera exécutée.
- Contrairement à IF-THEN-ELSIF, l'instruction CASE peut également être utilisée dans les instructions SQL.
- Le bloc ELSE dans l'instruction CASE contient la séquence qui doit être exécutée lorsqu'aucune des alternatives n'a été sélectionnée.
Syntaxe:
CASE (expression)WHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- Dans la syntaxe ci-dessus, l'expression renverra une valeur qui pourrait être de n'importe quel type (variable, nombre, etc.).
- Chaque clause 'WHEN' est traitée comme une alternative qui a
et . - La clause 'WHEN' qui correspond à la valeur comme celle de l'expression sera sélectionnée, et le
correspondant sera exécuté. - Le bloc 'ELSE' est facultatif et contient le
qui doit être exécuté lorsqu'aucune des alternatives ne correspond à la valeur de l'expression. - Le 'END' marque la fin de l'instruction CASE, et c'est une partie obligatoire de CASE.
Exemple 1: calcul arithmétique à l'aide de cas
Dans cet exemple, nous allons faire un calcul arithmétique entre deux nombres 55 et 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;/
Explication du code:
- Ligne de code 2: déclarer la variable 'a' comme type de données 'NUMBER' et l'initialiser avec la valeur '55'.
- Ligne de code 3: déclarer la variable 'b' comme type de données 'NUMBER' et l'initialiser avec la valeur '5.'
- Ligne de code 4: Déclarer la variable 'arth_operation' comme type de données 'VARCHAR2' de taille 20 et l'initialiser avec la valeur 'MULTIPLY'.
- Ligne de code 6: impression de l'instruction "Programme démarré".
- Ligne de code 7: CASE vérifie la valeur de l'expression. Dans ce cas, la valeur de la variable 'arth_operation' est 'MULTIPLY'. Cette valeur sera traitée comme un sélecteur pour cette instruction CASE maintenant.
- Ligne de code 10: La clause WHEN avec la valeur 'MULTIPLY' correspond à la valeur du sélecteur, par conséquent le contrôleur sélectionnera ce bloc d'action et affichera le message 'La multiplication des nombres sont: 275'.
- Code line13: marque la fin de l'instruction CASE.
- Code line14: Impression de l'instruction "Programme terminé".
Sortie de code:
Program started.Multiplication of the numbers are: 275Program completed.
Déclaration SEARCHED CASE
L'instruction SEARCHED CASE est similaire à l'instruction CASE, plutôt que d'utiliser le sélecteur pour sélectionner l'alternative, SEARCHED CASE aura directement l'expression définie dans la clause WHEN.
- La première clause WHEN qui satisfait la condition sera exécutée et le contrôleur ignorera les alternatives restantes.
Syntaxe:
CASEWHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- Dans la syntaxe ci-dessus, chaque clause WHEN a les différents
et . - La clause WHEN pour laquelle l'expression renvoie TRUE sera exécutée.
- Le bloc 'ELSE' est facultatif et contient le
qui doit être exécuté lorsqu'aucune des alternatives ne satisfait. - Le 'END' marque la fin de l'instruction CASE et, c'est une partie obligatoire de CASE.
Exemple 1: calcul arithmétique à l'aide du cas recherché
Dans cet exemple, nous allons faire un calcul arithmétique entre deux nombres 55 et 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;/
Explication du code:
- Ligne de code 2: déclarer la variable 'a' comme type de données 'NUMBER' et l'initialiser avec la valeur '55'.
- Ligne de code 3: déclarer la variable 'b' comme type de données 'NUMBER' et l'initialiser avec la valeur '5'.
- Ligne de code 4: Déclarer la variable 'arth_operation' comme type de données 'VARCHAR2' de taille 20 et l'initialiser avec la valeur 'DIVIDE'.
- Ligne de code 6: impression de l'instruction "Programme démarré".
- Ligne de code 7: l'instruction SEARCHED CASE commence. Le code de la ligne 8 à la ligne 13 est ignoré car la valeur de leur sélecteur (ADD, SUBTRACT, MULTIPLY) ne correspond pas à la valeur de 'arth_operation'.
- Ligne de code 14: L'expression de la clause WHEN "arth_operation = 'DIVIDE'" est satisfaite et l'expression renvoie TRUE.
- Ligne de code 15: Action_block de la clause WHEN sera exécuté et le message 'Division des nombres sont: 11' sera imprimé.
- Ligne de code 17: marque la fin de l'instruction CASE.
- Ligne de code 18: Impression de la déclaration «Programme terminé».
Sortie de code:
Program started.Division of the numbers are: 11Program completed.
Résumé
TAPER | LA DESCRIPTION | USAGE |
---|---|---|
CAS |
Similaire à l'instruction IF-THEN-ELSIF. Un 'SELECTOR' est utilisé pour choisir les alternatives au lieu d'une expression booléenne. |
Utilisé pour sélectionner parmi plusieurs alternatives en utilisant 'SELECTOR' |
CAS RECHERCHE |
Instruction CASE sans 'SELECTOR' réel. Au lieu de cela, il contient la condition réelle (qui prend la valeur VRAI / FAUX) qui sélectionnera les alternatives. |
Utilisé pour choisir parmi plus de deux alternatives principalement. |