Sommaire
Préface
Présentation du cursus
Introduction
Objectifs du cours I-2
A propos du langage PL/SQL I-3
Environnement PL/SQL I-4
Avantages liés à l'utilisation du langage PL/SQL I-5
Synthèse I-10
1 Déclaration de variables
Objectifs 1-2
Structure d'un bloc PL/SQL 1-3
Exécuter des instructions et des blocs PL/SQL 1-4
Types de bloc 1-5
Structures de programme 1-6
Utilisation des variables 1-7
Traiter les variables en PL/SQL 1-8
Types de variable 1-9
Utiliser des variables iSQL*Plus dans des blocs PL/SQL 1-10
Types de variable 1-11
Déclarer des variables PL/SQL 1-12
Remarques relatives à la déclaration de variables PL/SQL 1-13
Règles d'appellation 1-14
Initialisation de variables et mots-clés 1-15
Types de données scalaires 1-17
Types de données scalaires de base 1-18
Déclarations de variables scalaires 1-22
Attribut %TYPE 1-23
Déclarer des variables avec l'attribut %TYPE 1-24
Déclarer des variables booléennes 1-25
Types de données composites 1-26
Variables de type LOB 1-27
Variables attachées 1-28
Utiliser des variables attachées 1-30
Référencer des variables non PL/SQL 1-31
DBMS_OUTPUT.PUT_LINE 1-32
Synthèse 1-33
Présentation de l'exercice 1 1-35
iii
2 Ecrire des instructions exécutables
Objectifs 2-2
Syntaxe et remarques relatives aux blocs PL/SQL 2-3
Identificateurs 2-5
Syntaxe et remarques relatives aux blocs PL/SQL 2-6
Commenter le code 2-7
Fonctions SQL en PL/SQL 2-8
Fonctions SQL en PL/SQL : exemples 2-9
Conversion de type de données 2-10
Blocs imbriqués et portée des variables 2-13
Portée de l'identificateur 2-15
Qualifier un identificateur 2-16
Déterminer la portée d'une variable 2-17
Opérateurs en PL/SQL 2-18
Remarques relatives à la programmation 2-20
Indenter le code 2-21
Synthèse 2-22
Présentation de l'exercice 2 2-23
3 Interagir avec le serveur Oracle
Objectifs 3-2
Instructions SQL en PL/SQL 3-3
Instructions SELECT en PL/SQL 3-4
Extraire des données en PL/SQL 3-7
Convention d'appellation 3-9
Manipuler les données en PL/SQL 3-10
Insérer des données 3-11
Mettre à jour des données 3-12
Supprimer des données 3-13
Fusionner des lignes 3-14
Convention d'appellation 3-16
Curseur SQL 3-18
Attributs d'un curseur SQL 3-19
Instructions de gestion des transactions 3-21
Synthèse 3-22
Présentation de l'exercice 3 3-24
iv
4 Ecrire des structures de contrôle
Objectifs 4-2
Contrôler le flux d'exécution PL/SQL 4-3
Instructions IF 4-4
Instructions IF simples 4-5
Instructions IF composées 4-6
Flux d'exécution des instructions IF-THEN-ELSE 4-7
Instructions IF-THEN-ELSE 4-8
Flux d'exécution des instructions IF-THEN-ELSIF 4-9
Instructions IF-THEN-ELSIF 4-11
Expressions CASE 4-12
Exemple d'expressions CASE 4-13
Traiter les valeurs NULL 4-15
Tables logiques 4-16
Conditions booléennes 4-17
Contrôle d'itération : instructions LOOP 4-18
Boucles de base 4-19
Boucles WHILE 4-21
Boucles FOR 4-23
Remarques relatives à l'utilisation des boucles 4-26
Boucles imbriquées et étiquettes 4-27
Synthèse 4-29
Présentation de l'exercice 4 4-30
5 Utiliser des types de données composites
Objectifs 5-2
Types de données composites 5-3
Enregistrements PL/SQL 5-4
Créer un enregistrement PL/SQL 5-5
Structure d'un enregistrement PL/SQL 5-7
Attribut %ROWTYPE 5-8
Avantages liés à l'utilisation de l'attribut %ROWTYPE 5-10
Attribut %ROWTYPE 5-11
Tables INDEX BY 5-13
Créer une table INDEX BY 5-14
Structure des tables INDEX BY 5-15
Créer une table INDEX BY 5-16
Utiliser les méthodes des tables INDEX BY 5-17
Table d'enregistrements INDEX BY 5-18
Exemple de table d'enregistrements INDEX BY 5-19
Synthèse 5-20
Présentation de l'exercice 5 5-21
v
6 Ecrire des curseurs explicites
Objectifs 6-2
A propos des curseurs 6-3
Fonctions des curseurs explicites 6-4
Contrôler les curseurs explicites 6-5
Déclarer le curseur 6-9
Ouvrir le curseur 6-11
Extraire les données à partir du curseur 6-12
Fermer le curseur 6-14
Attributs d'un curseur explicite 6-15
Attribut %ISOPEN 6-16
Contrôler plusieurs extractions 6-17
Attributs %NOTFOUND et %ROWCOUNT 6-18
Exemple 6-20
Curseurs et enregistrements 6-21
Boucles FOR de curseur 6-22
Boucles FOR de curseur utilisant des sous-interrogations 6-24
Synthèse 6-26
Présentation de l'exercice 6 6-27
7 Concepts avancés sur les curseurs explicites
Objectifs 7-2
Curseurs paramétrés 7-3
Clause FOR UPDATE 7-5
Clause WHERE CURRENT OF 7-7
Curseurs contenant des sous-interrogations 7-9
Synthèse 7-10
Présentation de l'exercice 7 7-11
8 Traiter les exceptions
Objectifs 8-2
Traiter des exceptions en PL/SQL 8-3
Traiter les exceptions 8-4
Types d'exception 8-5
Intercepter les exceptions 8-6
Règles d'interception des exceptions 8-7
Intercepter les erreurs prédéfinies du serveur Oracle 8-8
vi
Exceptions prédéfinies 8-11
Intercepter les erreurs non prédéfinies du serveur Oracle 8-12
Erreur non prédéfinie 8-13
Fonctions d'interception des exceptions 8-14
Intercepter les exceptions définies par l'utilisateur 8-16
Exceptions définies par l'utilisateur 8-17
Environnements appelants 8-18
Propager des exceptions 8-19
Procédure RAISE_APPLICATION_ERROR 8-20
RAISE_APPLICATION_ERROR 8-22
Synthèse 8-23
Présentation de l'exercice 8 8-24
A Solutions des exercices
B Descriptions des tables et des données
C Type REF CURSOR
Exercices supplémentaires
Solutions des exercices supplémentaires
vii
viii