Oracle PL / SQL: instruction CASE avec exemples

Table des matières:

Anonim

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)WHEN  THEN 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:

CASEWHEN  THEN 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.