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 denie par l’utilisateur, la boucle LOOP s’acheve aussi. Examinons maintenant trois types de boucles PL/SQL qui denissent 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 verie 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 veriee 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é.


