Instruction CASE dans Oracle PL/SQL avec exemples
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 un « sélecteur » 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 se voit attribuer une certaine valeur prédéfinie (sélecteur), et l'alternative avec la valeur du 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'est sélectionnée.
Syntaxe
CASE (expression) WHEN <valuel> THEN action_blockl; WHEN <value2> THEN action_block2; WHEN <value3> THEN action_block3; ELSE action_block_default; END CASE;
- Dans la syntaxe ci-dessus, l'expression renverra une valeur qui pourra ê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 de celle de l'expression sera sélectionnée, et la clause correspondante 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 constitue une partie obligatoire de CASE.
1 Exemple: Calcul arithmétique à l'aide du cas
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) :='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; /
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 la déclaration « 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 désormais traitée comme un sélecteur pour cette instruction CASE.
- Ligne de code 10 : La clause WHEN avec la valeur « MULTIPLY » correspond à la valeur du sélecteur, donc le contrôleur sélectionnera ce bloc d'action et imprimera le message « La multiplication des nombres est : 275 ».
- Ligne de code 13 : marque la fin de l’instruction CASE.
- Ligne de code 14 : Impression de la déclaration « Programme terminé ».
Sortie de code
Program started. Multiplication of the numbers are: 275 Program completed.
CAS RECHERCHÉ Déclaration
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
CASE WHEN <expression1> THEN action_blockl; WHEN <expression2> THEN action_block2; WHEN <expression3> THEN action_block3; ELSE action_block_default; END CASE;
- Dans la syntaxe ci-dessus, chaque clause WHEN a son propre 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 n’est satisfaisante.
- Le 'END' marque la fin de l'instruction CASE et c'est une partie obligatoire de CASE.
1 Exemple: 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'; 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; /
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 la déclaration « 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 'La division des nombres est : 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: 11 Program completed.
Résumé
TYPE | DESCRIPTION | UTILISATION |
---|---|---|
Adhésion | Similaire à SI-ALORS-ELSIF déclaration. Un 'SELECTOR' est utilisé pour choisir les alternatives à la place de l'expression booléenne. | Utilisé pour sélectionner parmi plusieurs alternatives à l'aide de 'SELECTOR' |
CAS RECHERCHÉ | Instruction CASE sans véritable « SELECTOR ». Au lieu de cela, il contient la condition réelle (qui est évaluée à VRAI/FAUX) qui sélectionnera les alternatives. | Utilisé pour choisir entre plus de deux alternatives pour la plupart. |