Instruction CASE dans Oracle PL/SQL avec exemples
โก Rรฉsumรฉ intelligent
L'instruction CASE de PL/SQL sรฉlectionne une alternative parmi plusieurs en fonction d'un sรฉlecteur, ร l'instar de IF-THEN-ELSIF, mais de maniรจre plus claire. Une instruction CASE simple vรฉrifie la valeur du sรฉlecteur, tandis qu'une instruction CASE avec recherche รฉvalue une condition dans chaque clause WHEN et exรฉcute la premiรจre condition vraie.

Qu'est-ce qu'une dรฉclaration CASE ?
Une instruction CASE est similaire ร l'instruction IF-THEN-ELSIF ; elle sรฉlectionne une alternative parmi les options disponibles en fonction d'une condition.
- Une 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 est traitรฉe comme un sรฉlecteur.
- L'expression peut รชtre de tout type (arithmรฉtique, variables, etc.).
- Chaque alternative se voit attribuer une certaine valeur prรฉdรฉfinie (sรฉlecteur), et l'alternative dont la valeur du sรฉlecteur correspond ร la valeur de l'expression conditionnelle est exรฉcutรฉe.
- Contrairement ร IF-THEN-ELSIF, l'instruction CASE peut รฉgalement รชtre utilisรฉe dans les instructions SQL.
- Le bloc ELSE d'une instruction CASE contient la sรฉquence ร exรฉcuter lorsqu'aucune des alternatives n'est sรฉlectionnรฉe.
Syntaxe
CASE (expression) WHEN <value1> THEN action_block1; WHEN <value2> THEN action_block2; WHEN <value3> THEN action_block3; ELSE action_block_default; END CASE;
- Dans la syntaxe ci-dessus, l'expression renvoie une valeur qui peut รชtre de n'importe quel type.
- Chaque clause ยซ QUAND ยป est une alternative qui a une et un .
- La clause ยซ WHEN ยป dont la valeur correspond ร lโexpression est sรฉlectionnรฉe, et sa est exรฉcutรฉ.
- Le bloc ยซ ELSE ยป est facultatif et contient le ร exรฉcuter lorsqu'aucune alternative ne correspond.
- ยซ END ยป marque la fin de l'instruction CASE et constitue une partie obligatoire de CASE.
Exemple 1 : Calcul arithmรฉtique avec CASE
Dans cet exemple, nous effectuons 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; /
Code Explication
- Code ligne 2 : Dรฉclaration de la variable 'a' comme 'NUMBER' et initialisation de celle-ci avec la valeur '55'.
- Code ligne 3 : Dรฉclaration de la variable 'b' comme 'NUMBER' et initialisation de celle-ci avec la valeur '5'.
- Code ligne 4 : Dรฉclaration de la variable 'arth_operation' comme 'VARCHAR2' de taille 20 et initialisation avec la valeur 'MULTIPLY'.
- Code ligne 6 : Impression du message ยซ Programme dรฉmarrรฉ ยป.
- Code Ligne 7 : Lโinstruction CASE vรฉrifie la valeur de lโexpression. Ici, la valeur de ยซ arth_operation ยป est ยซ MULTIPLY ยป, qui est interprรฉtรฉe comme le sรฉlecteur.
- Code ligne 10 : La clause WHEN avec la valeur 'MULTIPLY' correspond au sรฉlecteur, le contrรดleur sรฉlectionne donc ce bloc d'action et affiche 'Multiplication des nombres : 275'.
- Code ligne 13 : Marque la fin de lโinstruction CASE.
- Code ligne 14 : Impression du message ยซ Programme terminรฉ ยป.
Code Sortie
Program started. Multiplication of the numbers are: 275 Program completed.
CAS RECHERCHร Dรฉclaration
L'instruction CASE recherchรฉe est similaire ร l'instruction CASE, mais au lieu d'utiliser un sรฉlecteur pour choisir l'alternative, l'instruction CASE recherchรฉe dรฉfinit directement la condition dans la clause WHEN.
- La premiรจre clause WHEN qui satisfait la condition est exรฉcutรฉe, et le contrรดleur ignore les autres alternatives.
Syntaxe
CASE WHEN <expression1> THEN action_block1; WHEN <expression2> THEN action_block2; WHEN <expression3> THEN action_block3; ELSE action_block_default; END CASE;
- Dans la syntaxe ci-dessus, chaque clause WHEN possรจde une clause distincte. et .
- La clause WHEN pour laquelle l'expression renvoie TRUE est exรฉcutรฉe.
- Le bloc ยซ ELSE ยป est facultatif et contient le exรฉcuter lorsqu'aucune des alternatives n'est satisfaite.
- ยซ END ยป marque la fin de l'instruction CASE et constitue une partie obligatoire de CASE.
Exemple 1 : Calcul arithmรฉtique utilisant un cas de recherche
Dans cet exemple, nous effectuons 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; /
Code Explication
- Code ligne 2 : Dรฉclaration de la variable 'a' comme 'NUMBER' et initialisation de celle-ci avec la valeur '55'.
- Code ligne 3 : Dรฉclaration de la variable 'b' comme 'NUMBER' et initialisation de celle-ci avec la valeur '5'.
- Code ligne 4 : Dรฉclaration de la variable 'arth_operation' comme 'VARCHAR2' de taille 20 et initialisation avec la valeur 'DIVIDE'.
- Code ligne 6 : Impression du message ยซ Programme dรฉmarrรฉ ยป.
- Code Ligne 7 : Dรฉbut de lโinstruction CASE recherchรฉe. Les clauses ADD et SUBTRACLes fonctions T et MULTIPLY sont ignorรฉes, car leurs conditions ne correspondent pas ร la valeur de 'arth_operation'.
- Code ligne 14 : L'expression de la clause WHEN ยซ arth_operation = 'DIVIDE' ยป est satisfaite et renvoie TRUE.
- Code ligne 15 : Le bloc d'action de la clause WHEN est exรฉcutรฉ et 'Division des nombres : 11' est imprimรฉ.
- Code ligne 17 : Marque la fin de lโinstruction CASE.
- Code ligne 18 : Impression du message ยซ Programme terminรฉ ยป.
Code Sortie
Program started. Division of the numbers are: 11 Program completed.
Comparaison des cas et des cas recherchรฉs
Les deux formulaires choisissent une seule branche, mais ils diffรจrent dans la maniรจre dont la branche est sรฉlectionnรฉe, comme rรฉsumรฉ ci-dessous.
| Type | Description | Utilisation |
|---|---|---|
| BOรTIER | Semblable ร la SI-ALORS-ELSIF Dans cette instruction, un ยซ sรฉlecteur ยป est utilisรฉ pour choisir l'alternative au lieu d'une expression boolรฉenne. | Utilisรฉ pour sรฉlectionner parmi plusieurs alternatives ร l'aide d'un sรฉlecteur. |
| CAS RECHERCHร | Une instruction CASE sans sรฉlecteur proprement dit. Elle contient plutรดt la condition (qui s'รฉvalue ร VRAI ou FAUX) permettant de sรฉlectionner l'alternative. | Permettait de choisir parmi plus de deux alternatives, gรฉnรฉralement avec des conditions de gamme. |
