PL SQL Structures de contrôle

image_pdfimage_print

Comme tout langage, PL SQL offre des structures de contrôle qui permettent de traiter ‘information d’une maniere conditionnelle ou itérative, et de rompre la séquence logique d’un programme.

Conditionnelle IF-THEN ELSE,

Ils peuvent prendre 3 formes:
IF THEN END IF ; — simple
IF THEN ELSE END IF ; — avec alternative
IF THEN ELSIF END IF ; — avec condition imbriquée

Instruction IF simple
Syntaxe

IF c o n d i t i o n THEN enonce s ;
[ ELSIF c o n d i t i o n THEN enonce s ; ]
[ELSE enonce s ; ]
END IF ;

exemple

IF vnom = ‘MARTIN’ THEN v ID := 10;
END IF ;

instruction multiples dans le IF:

. . .
IF vnom = ‘ Clement ‘ THEN
vposte := ‘ En s e i g n a n t ‘ ;
vdeptno := 102;
vnouv comm := s a l  0 . 2 5 ;
END IF ;

IF-THEN-ELSE
Si le nom de l’employe est ‘Martin’, lui attribuer le poste
‘Employé’, le departement n 10 et une commission de 100

. . .
IF vnom = ‘ Martin’ THEN
job := ‘ CLERK’ ;
vdeptno := 10;
vcomm := 100 ;
ELSE
DBMS OUTPUT. PUT LINE( ‘ Employe  i n e x i s t a n t ‘ ) ;
END IF ;
. . .

IF-THEN-ELSIF
Pour une valeur donnee en entree, retourner une valeur
calculee.
Exemple
. . .
IF vdebut > 100 THEN RETURN ( 2  vdebut ) ;
ELSIF vdebut >= 50 THEN RETURN ( 5  vdebut ) ;
ELSE RETURN (1  v debut ) ;
END IF ;
. . .

CASE

 

Case est une alternative multi branches classique. La syntaxe générale est la suivante:

CASE [ expression ]

   WHEN condition_1 THEN result_1
   WHEN condition_2 THEN result_2
   ...
   WHEN condition_n THEN result_n

   ELSE result

END

LOOP / EXIT

LOOP et EXIT-WHEN. Ces structures procurent de la flexibilite dans la manipulation des donnees de la base de donnees.
8.1 Boucles
L’utilisation de la commande LOOP fournit un traitement iteratif base sur des choix logiques. La construction de base des boucles  LOOP¯ est montree ici:

<<nom>>
LOOP
(traitement repetitif)
END LOOP nom;

Pour sortir d’une boucle de ce genre, il faut une commande EXIT ou GOTO basee sur une condition du traitement. En cas de levee d’exception de nie par l’utilisateur, la boucle LOOP s’acheve aussi. Examinons maintenant trois types de boucles PL/SQL qui de nissent des conditions explicites de terminaison.
Une boucle peut ^etre nommee comme cela a ete montre dans l’exemple en utilisant une etiquette telle que <<nom>> juste avant l’instruction LOOP. Bien que ce ne soit pas obligatoire, l’etiquetage permet de garder une meilleure trace de l’imbrication des boucles.

Boucles WHILE

La boucle WHILE veri e l’etat d’une expression PL/SQL qui doit s’evaluer a TRUE, FALSE ou NULL au debut de chaque cycle de traitement. Ce qui suit est un exemple d’utilisation de boucles WHILE :

WHILE (expression) LOOP
(traitement de boucle)
END LOOP;

Comme indique, le programme evalue l’expression au debut de chaque cycle de boucle. Le programme execute le traitement de la boucle si l’expression s’evalue a TRUE. Une valeur FALSE ou NULL termine la boucle. Les iterations a travers la boucle sont exclusivement determinees par l’evaluation de l’expression.

Boucles FOR numeriques

Les iterations de boucles peuvent ^etre contr^olees avec des boucles FOR numeriques. Ce mecanisme permet au developpeur d’etablir un intervalle d’entiers pour lesquels la boucle va être iteree.

<<recip_list>>
FOR i in 1..g_line_counter LOOP
(traitement de boucle)
END LOOP recip_list;

Dans cet exemple, la boucle est iteree pour les entiers de 1 jusqu’a la valeur de g_line_counter. Lavvaleur de l’index de boucle i est veri ee au debut de la boucle et incrementee a la n de la boucle. Lorsque i est egal a g line counter + 1, la boucle termine.

Remarque: il existe des boucles FOR…CURSOR dont le nombre d’itérations n’est pas prédéterminé.