PL/SQL : Procedural Language for Oracle-SQL

0/21

Structure de PL/SQL

1/21

Déclarations

2/21

Structures de contrôle simples

3/21

Les boucles

4/21

Les curseurs

5/21

Les attributs d'un curseur

6/21

Traitement complet d'un curseur explicite

DECLARE
   v_liv_num livre.liv_num%TYPE;
   v_liv_titre livre.liv_titre%TYPE;
   CURSOR cursLivre IS SELECT liv_num, liv_titre FROM livre ORDER BY liv_num;
BEGIN
   OPEN cursLivre;
   LOOP 
   FETCH cursLivre INTO v_liv_num, v_liv_titre;
   EXIT WHEN (cursLivre%NOTFOUND);
   
   ...
   
   END LOOP;
   CLOSE cursLivre;
END;

7/21

Traitement simplifié

DECLARE
   CURSOR cursLivre IS SELECT liv_num, liv_titre FROM livre ORDER BY liv_num;
   recordCursLivre cursLivre%ROWTYPE;
BEGIN
   OPEN cursLivre;
   LOOP 
   FETCH cursLivre INTO recordCursLivre;
   EXIT WHEN (cursLivre%NOTFOUND);
   
   ...
   -- avec les variables recordCursLivre.liv_num et recordCursLivre.liv_titre
   
   END LOOP;
   CLOSE cursLivre;
END;

8/21

Traitement simplifié avec FOR-LOOP

DECLARE
   CURSOR cursLivre IS SELECT liv_num, liv_titre FROM livre ORDER BY liv_num;
   -- plus de structure;
BEGIN
   FOR recordCursLivre IN cursLivre LOOP 
   -- ouverture automatique du curseur
   -- fetch automatique du curseur
   -- condition de sortie automatique du curseur
   ...
   
   END LOOP;
END;

9/21

Curseur implicite

DECLARE
   -- plus de déclaration de curseur
BEGIN
   FOR recordCursLivre IN (SELECT liv_num, liv_titre FROM livre ORDER BY liv_num) LOOP 
   -- ouverture automatique du curseur
   -- fetch automatique du curseur
   -- condition de sortie automatique du curseur
   ...
   
   END LOOP;
END;

10/21

Les Curseurs paramétrés

11/21

Mise à jour des données avec un curseur

12/21

Gestion des erreurs

13/21

Les procédures

14/21

Les fonctions

15/21

Procédures déclenchées (Triggers)

16/21

Exemple de trigger

17/21

Attribution automatique d'un numéro de clé

18/21

Affichage sur la sortie standard

19/21

Fonctions Tables

20/21

FAQ

21/21