Introduction à la déclaration de cas en PL / SQL

L'instruction CASE en PL / SQL est similaire à la condition IF-ELSEIF où différentes conditions sont répertoriées dans un bloc et seules les instructions sont exécutées pour lesquelles elle satisfait la condition. L'instruction CASE correspond à la valeur d'expression au lieu d'une expression booléenne. L'expression peut être de n'importe quel type de données et le même type de données doit être utilisé dans les instructions. Chaque instruction a une valeur prédéfinie et si cette valeur correspond aux valeurs passées dans l'expression de sélecteur, alors cette instruction particulière est exécutée. Dans cette rubrique, nous allons en savoir plus sur l'instruction CASE en PL / SQL.

Syntaxe

Maintenant que vous avez une idée de ce qu'est une instruction CASE en PL / SQL, examinons la syntaxe de l'instruction CASE.

CASE (expression)
WHEN THEN statement_l;
WHEN THEN statement_2;
WHEN THEN statement_3;
ELSE default_statement;
END CASE;

Explication du code

Dans la syntaxe ci-dessus, l'expression retournera une valeur de n'importe quel type de données, toutes les instructions auront une valeur unique prédéfinie, l'expression CASE passera par toutes les instructions jusqu'à ce qu'elle obtienne la correspondance exacte définie dans l'expression de valeur, dans ce cas, Value_1, Value_2 et Value_3. Si l'expression Case n'a pas trouvé la correspondance dans l'instruction, l'instruction par défaut sera exécutée.

Notez que le bloc ELSE est facultatif et si vous ne souhaitez pas qu'une instruction par défaut soit exécutée, vous pouvez ignorer cette instruction. Le cas END est une partie obligatoire du cas.

Représentation schématique

Comment fonctionne la déclaration de cas en PL / SQL?

Bien que la déclaration CASE introduite dans Oracle 9i ait été largement utilisée dans les autres langages de programmation. Comme d'autres langages de programmation, l'instruction CASE fonctionne de manière similaire.

Oracle 9i prend en charge deux types d'instructions CASE: instruction CASE simple et instruction CASE recherchée

1. Énoncé de cas simple

Dans l'instruction case simple, une instruction est exécutée si la valeur de l'expression correspond à la condition indiquée. Ces conditions d'instruction sont prédéfinies lors de l'écriture de l'instruction CASE. Une fois que le compilateur trouve une correspondance, il se casse et sort de la boucle après avoir exécuté l'instruction, évitant ainsi toute évaluation d'expression inutile. Si le compilateur n'a trouvé aucune correspondance, il exécutera l'instruction du cas par défaut. Le cas par défaut n'est pas obligatoire et peut être ignoré.

Syntaxe

CASE expression
WHEN condition_1 THEN
statements1
WHEN condition_2 THEN
statements2

ELSE
statements_else
END CASE;

Explication

Comme mentionné précédemment, le cas ELSE est facultatif. Le compilateur évalue d'abord l'expression CASE, puis il compare l'expression à la première condition. Si la condition correspond à l'expression, l'instruction 1 sera exécutée, sinon la condition 2 est vérifiée, etc.

Voyons un exemple en temps réel pour mieux comprendre le concept

SELECT Employee_Name,
CASE rating
WHEN 1 THEN 'Low'
WHEN 3 THEN 'High'
ELSE 'Medium' END
FROM Review;

Supposons qu'il existe un tableau de révision contenant les détails des commentaires de fin d'année des employés et que vous devez montrer le nom de l'employé et les notes. Mais au lieu des chiffres que vous souhaitez afficher, le bas de la note est 1, le haut de la note est 3, sinon moyen.

La requête écrite ci-dessus produira les résultats ci-dessous

Employee_Name CASECR

------– --

Bogart Low

Nolte Medium

Loren Medium

Gueney High

2. Déclaration CASE recherchée

L'instruction CASE recherchée est légèrement différente de la simple instruction CASE. Dans l'instruction de requête recherchée au lieu d'une condition prédéfinie, vous pouvez écrire une condition qui sera évaluée au moment de l'exécution.

jetons un œil à la syntaxe de l'instruction Searched CASE avec cet exemple

CASE
WHEN salary >= 10000 AND salary <=20000 THEN
AllocateBonus(employee_id, 1500);
WHEN salary > 20000 AND salary <= 40000 THEN
AllocateBonus(employee_id, 1000);
WHEN salary > 40000 THEN
AllocateBonus(employee_id, 500);
WHEN salary > 60000 THEN
AllocateBonus(employee_id, 250);
ELSE
AllocateBonus(employee_id, 0);
END CASE;

Supposons que l'exigence consiste à attribuer des primes à un employé en fonction de son échelle salariale actuelle. Si un employé tombe dans certains critères, la fonction AllocateBonus doit être appelée, ce qui prend l'employé_id et le bonus de montant comme paramètres.

Dans l'exemple ci-dessus, nous avons défini différentes fourchettes de salaire et en fonction de cette fonction, AllocateBonus sera appelée si le salaire se situe dans la plage spécifiée.

Remarque : Dans chaque itération, une et une seule instruction sera exécutée même si plusieurs instructions satisfont aux critères. Quand les clauses sont toujours évaluées de haut en bas.

Conseils

Étant donné que la clause WHEN est évaluée dans un certain ordre, c'est-à-dire de haut en bas, il serait recommandé de répertorier les clauses les plus susceptibles de se produire en premier ou la fréquence est plus. En plus de celle de n'importe quelle clause WHEN, une expression coûteuse, c'est-à-dire qui nécessite beaucoup de mémoire CPU, doit être présente au dernier afin de minimiser les chances d'être exécutée.

3. Déclaration CASE imbriquée

Comme l'instruction IF-ELSE imbriquée, l'instruction CASE peut également être imbriquée. La syntaxe reste la même, mais lorsque la condition extérieure satisfait aux critères, elle passe à nouveau par une série d'instructions. Improvisons l'exemple CASE recherché ci-dessus pour comprendre le fonctionnement de l'instruction Nested CASE.

CASE
WHEN salary >= 10000 THEN
CASE
WHEN salary <= 20000 THEN
AllocateBonus(employee_id, 1500);
WHEN salary > 20000 THEN
AllocateBonus(employee_id, 1000);
END CASE;
WHEN salary > 40000 THEN
AllocateBonus(employee_id, 500);
WHEN salary < 10000 THEN
give_bonus(employee_id, 0);
END CASE;

Explication

Comme vous le voyez, la syntaxe reste la même que lorsque la condition la satisfait à nouveau, passez par une instruction CASE pour enfin exécuter la fonction Allocate.

Conclusion - instruction CASE en PL / SQL

Maintenant que nous avons atteint la fin de l'article, résumons les points clés dont nous avons discuté dans cet article. Nous avons vu ce qu'est une instruction CASE en PL / SQL, appris la syntaxe de base avec un exemple. Nous avons discuté des différents types d'instruction CASE, à savoir CASE simple, CASE recherché et instruction CASE imbriquée avec un exemple. Nous avons également appris comment optimiser la déclaration CASE en ordonnant correctement la clause WHEN.

Articles recommandés

Ceci est un guide de l'instruction CASE en PL / SQL. Nous discutons ici de la façon dont l'instruction Case fonctionne en PL / SQL avec les exemples et la syntaxe. Vous pouvez également consulter les articles suivants pour en savoir plus -

  1. Qu'est-ce que PL / SQL?
  2. Commandes PL / SQL
  3. Utilisations de SQL
  4. Carrières en PL / SQL
  5. Déclaration IF-Else dans Matlab
  6. Boucles en PL / SQL