SlideShare una empresa de Scribd logo
1 de 268
Descargar para leer sin conexión
Le langage PL/SQL
Présentation de la formation
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Le langage PL/SQL
Noureddine DRISSI
Expert consultant bases de
données
Plan
Le formateur
Mes formations sur Alphorm
Les objectifs de la formation
Le plan de formation
Publics concernés
Le langage PL/SQL alphorm.com™©
Publics concernés
Connaissances requises
Liens utiles
Le formateur
Noureddine DRISSI
Expertise dans le domaine des bases de données
15 années d’expérience sur tous les SGBDR du marché (SQL Server, Oracle,
Postgresql, Mysql, DB2, MongoDB, SQL, PL/SQL, Transact-SQL)
Issue de l’environnement bancaire
Le langage PL/SQL alphorm.com™©
contact@ordb.fr
Mes formations sur alphorm.com
MySQL, Administration
(1Z0-883)
Oracle Database 11g DBA 1
(1Z0-052)
Formation PostgreSQL,
La haute disponibilité
Le langage PL/SQL alphorm.com™©
(1Z0-883)
MongoDB,
administration
(1Z0-052)
Formation Administration
PostgreSQL
Administration SQL Server
2012 (70-462)
Le langage SQL
La haute disponibilité
Objectifs
Maîtriser le langage PL/SQL
Utiliser des traitements stockés et des triggers dans les applications
Le langage PL/SQL alphorm.com™©
Plan de cours
Module 1: Présentation du PL/SQL
Module 2: Les variables
Module 3: Accès à la base de données et ordres SQL
Module 4: Les structures de contrôle
Module 5: Les curseurs
Le langage PL/SQL alphorm.com™©
Module 5: Les curseurs
Module 6: Gestion des erreurs
Module 7: Les programmes stockés
Module 8: Les triggers
Module 9: Les packages
Publics concernés
Concepteurs
Développeurs
Toutes les personnes impliquées dans des développements utilisant la base de
données Oracle.
Le langage PL/SQL alphorm.com™©
Connaissances requises
Connaissance du language SQL
Notions de programmation
Ressource :
Formation Le langage SQL sur Alphorm
• http://www.alphorm.com/formation/formation-langage-sql
Le langage PL/SQL alphorm.com™©
• http://www.alphorm.com/formation/formation-langage-sql
Liens utiles
Documentation PL/SQL
http://docs.oracle.com/cd/B10501_01/appdev.920/a96624/toc.htm
http://oracle.developpez.com/cours/#SQL-et-PL-SQL
Téléchargement Oracle 11g Express Edition
http://www.oracle.com/technetwork/database/database-technologies/express-
Le langage PL/SQL alphorm.com™©
http://www.oracle.com/technetwork/database/database-technologies/express-
edition/downloads/index.html
Téléchargement Oracle SQL Developer
http://www.oracle.com/technetwork/developer-tools/sql-
developer/downloads/index.html
Présentation de l’environnement
Le langage PL/SQL alphorm.com™©
L’environnement
Présentation de la formation
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
L’environnement
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Configurer l’environnement de travail
Vérifier les pré-requis
Installer le SGBDR Oracle Database 11g Express Edition
Installer Oracle SQL Developer
Se connecter au moteur de base de données Oracle
Le langage PL/SQL alphorm.com™©
Se connecter au moteur de base de données Oracle
Créer le shéma facsys (facsysv2.sql)
Les pré-requis
Matériel
Mémoire
• Minimum :
- Éditions Express : 512 MO
Processeur
• Minimum :
Le langage PL/SQL alphorm.com™©
• Minimum :
- Processeur x86 : 1,0 GHz, Processeur x64 : 1,4 GHz
- Recommandé : 2,0 GHz ou plus
Disque
• Minimum :
- 5,0 GO disponible
Les pré-requis
Logiciels
OS
• Windows 8
SGBDR et outil
• Oracle Database 11g Express Edition
Le langage PL/SQL alphorm.com™©
• Oracle Database 11g Express Edition
http://www.oracle.com/technetwork/database/database-technologies/express-
edition/downloads/index.html
• Oracle SQL Developer
http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html
Le modèle de données (facsys)
Le langage PL/SQL alphorm.com™©
Atelier
Installation du SGBDR Oracle Database 11g Express Edition
Installation de Oracle SQL Developper
Connexion à la base de données
Création du schéma facsys et test de connexion
Le langage PL/SQL alphorm.com™©
Présentation du langage PL/SQL
Le langage PL/SQL alphorm.com™©
Les outils de
Présentation du langage
PL/SQL
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Les outils de
développement
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Utiliser Oracle SQL Developer pour développer en PL/SQL
Exécuter un programme PL/SQL à partir de sqlplus
Le langage PL/SQL alphorm.com™©
Oracle SQL Developer
Caractéristiques
Auto-formatage des instructions PL/SQL et SQL
Inclut un débogueur PL/SQL
Permet de naviger dans les objets de bases de données
Contient des modèles de code
Le langage PL/SQL alphorm.com™©
Contient des modèles de code
Permet l’exécution de scripts
Le langage PL/SQL
Le langage PL/SQL alphorm.com™©
Le langage PL/SQL
Présentation du langage
PL/SQL
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Le langage PL/SQL
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Connaître la syntaxe du langage PL/SQL
Ecrire et exécuter un bloc PL/SQL
Exercices pratiques
Le langage PL/SQL alphorm.com™©
Le langage PL/SQL
PL/SQL = Procedural Language extensions to SQL
Langage procédural
Les variables
Les structures de contrôle et les boucles
Les procédures, les fonctions, les triggers et les packages
Le langage PL/SQL alphorm.com™©
Les procédures, les fonctions, les triggers et les packages
Langage structuré en blocs (ensemble d’instructions)
Externe (anonyme) ou stocké en base (procédure, fonctions ou triggers)
S’intègre dans les outils SQL*FORMS, SQL*PLUS, PRO*C, etc.
Client ORACLE
Moteur PL/SQL
Architecture PL/SQL
BLOC
PL/SQL
BLOC
PL/SQL
Instructions
procédurales
Procédurale
Le langage PL/SQL alphorm.com™©
Moteur SQL
SQLInstructions
SQL
Structure d’un programme PL/SQL
Se décompose en trois parties
[DECLARE]
..........
..........
BEGIN
..........
La zone DECLARE sert à la déclaration des
variables, des constantes, ou des curseurs
La zone BEGIN constitue le corps du programme
La zone EXCEPTION permet de préciser les actions
Le langage PL/SQL alphorm.com™©
..........
..........
[EXCEPTION]
..........
..........
END ;
/
La zone EXCEPTION permet de préciser les actions
à entreprendre lorsque des erreurs sont rencontrées
(pas de référence article trouvée pour une insertion,
...).
Le END répond au BEGIN précédent, il marque la
fin du script.
Le / permet de terminer le bloc PL/SQL
DBMS_OUTPUT
Permet d’afficher une chaîne ou le contenu d’une variable
SET SERVEROUTPUT ON;
BEGIN
DBMS_OUTPUT.PUTLINE(<valeur>);
END ;
/
Le langage PL/SQL alphorm.com™©
/
Bloc PL/SQL: exercice 1 (sol_exercice1.txt)
Créez un bloc PL/SQL qui affiche le texte suivant
Créer un programme PL/SQL qui insère une nouvelle catégories (table
CATEGORIES) de produit avec les valeurs suivantes: CODE_CAT = 5 et
LIBELLE_CAT = "Composants"
Bonjour facys: vous êtes sur la plateforme Alphorm le <date_du_jour>
Le langage PL/SQL alphorm.com™©
Un peu plus loin dans l’utilisation de
PL/SQL
Le langage PL/SQL alphorm.com™©
PL/SQL
Un peu plus loin dans
Présentation du langage
PL/SQL
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Un peu plus loin dans
l’utilisation du PL/SQL
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Connaîtres les principales caractéristiques du PL/SQL
Connaître les directives de compilation d’un bloc PL/SQL
Connaître la notion de bloc imbriquée
Le langage PL/SQL alphorm.com™©
Rappel: structure d’un bloc PL/SQL
[DECLARE]
..........
..........
BEGIN
..........
..........
[EXCEPTION]
Le langage PL/SQL alphorm.com™©
[EXCEPTION]
..........
..........
END ;
/
Limites et fonctionnement
Contenu d’un bloc PL/SQL
LMD (langage de manipulation de données)
LDD (langage de définition des données) est interdit
Gestion des transactions
Identique à SQL
Le langage PL/SQL alphorm.com™©
Identique à SQL
Directive PRAGMA
Le mot clé PRAGMA
Instruction de compilation (non exécutable)
Les valeurs possibles
EXCEPTION_INIT
RESTRICT_REFERENCES
Le langage PL/SQL alphorm.com™©
RESTRICT_REFERENCES
SERIALLY_REUSABLE
AUTONOMOUS_TRANSACTION
Les blocs imbriqués
[DECLARE]
..........
BEGIN
..........
[DECLARE]
..........
BEGIN
..........
Le langage PL/SQL alphorm.com™©
[EXCEPTION]
..........
..........
END ;
/
..........
[EXCEPTION]
..........
END ;
/
Affichage à l’écran
[DECLARE]
..........
BEGIN
dbms_output.put_line ...
[EXCEPTION]
Le langage PL/SQL alphorm.com™©
[EXCEPTION]
..........
..........
END ;
/
Les variables
Le langage PL/SQL alphorm.com™©
Introduction aux variables
Les variables
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Introduction aux variables
PL/SQL
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Connaître les types de données des variables
Déclarer et manipuler des variables en PL/SQL
Le langage PL/SQL alphorm.com™©
Déclaration des variables
DECLARE
..........
..........
BEGIN
..........
..........
[EXCEPTION]
ICI
Nommage d’une variable
Longueur <= 30 caractères
Composé des lettres A-Z, chiffres de
1-9, « $ », « _ » ou « # »
Le langage PL/SQL alphorm.com™©
[EXCEPTION]
..........
..........
END ;
/
Doit commencer par une lettre
Ne doit pas être un mot réservé
Les types de données PL/SQL
Types scalaires
BINARY_INTEGER
INTEGER
NUMBER
POSITIVE/NATURAL
CHAR
LONG
VARCHAR ou VARCHAR2
BOOLEAN
RAW
LONG RAW
CLOB
BLOB
Types composés
RECORD
TABLE
Types
numériques
Types
caractères
Types RAW
Le langage PL/SQL alphorm.com™©
DECIMAL
FLOAT
INTEGER
REAL
SMALLLINT
BOOLEAN
DATE
ROWID
CLOB
UROWID
BFILE
Types dates
Types
ROWID
Types
booléens
Types LOB
Conversion de types de données
Les types de conversion
EXPLICITE
• Utilisent des fonctions comme TO_DATE, TO_CHAR, etc.
IMPLICITE
• Réalisées automatiquement par le moteur PL/SQL
Le langage PL/SQL alphorm.com™©
• Réalisées automatiquement par le moteur PL/SQL
- Evaluation d’expressions
- Affectation des variables
Conversion de types de données
Evaluation d’expressions
NUMBER
DATE
ROWID
Le langage PL/SQL alphorm.com™©
BINARY_INTEGER
CHAR
VARCHAR2
RAW
Conversion de types de données
Affectation de variables
NUMBER
DATE
ROWID
Le langage PL/SQL alphorm.com™©
BINARY_INTEGER
CHAR
VARCHAR2
RAW
Déclaration de variables
Syntaxe
<nom_variable> [CONSTANT] TYPE [NOT NULL] [{DEFAULT] | :=} VALEUR];
Le langage PL/SQL alphorm.com™©
Les variables de liaison
Le langage PL/SQL alphorm.com™©
Les variables de liaison
Les variables
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Les variables de liaison
Noureddine DRISSI
Expert consultant bases de
données
Objectif
Savoir utiliser les variables de liaison
Le langage PL/SQL alphorm.com™©
Qu’est-ce qu’une variable de liaison ?
Permet de socker les entrées utilisateurs
De visualiser le contenu d’une variable à travers plusieurs exécution
successives de bloc PL/SQL
DECLARE
..........
BEGIN
variable ...
Le langage PL/SQL alphorm.com™©
BEGIN
:variable ...
..........
[EXCEPTION]
..........
..........
END ;
/
La portée des variables
Le langage PL/SQL alphorm.com™©
La portée des variables
Les variables
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
La portée des variables
Noureddine DRISSI
Expert consultant bases de
données
Objectif
Connaître la portée des variables dans un programme PL/SQL
Le langage PL/SQL alphorm.com™©
La portée des variables PL/SQL
Une variable est accessible dans le bloc dans lequel elle a été déclarée
et dans les blocs secondaires (imbriqués)
• Si le nom d’une variables déclarée dans le bloc principal est réutilisé
dans un bloc secondaire, c’est une nouvelle variable qui est créée
Le langage PL/SQL alphorm.com™©
Les autres types de données PL/SQL
Le langage PL/SQL alphorm.com™©
Les autres types de
données PL/SQL
Les variables
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Les autres types de
données PL/SQL
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Connaître les autres types de données PL/SQL
Types définis par les utilisateurs
Types composés
• Les enregistrements ou structure
• Les tableaux
Le langage PL/SQL alphorm.com™©
• Les tableaux
Les variables basées
Créer et utiliser les autres types de données
Les types définis par les utilisateurs
Deux types dérivés possibles:
Les types bornés
Les types non bornés (alias ou synonym d’un type de base)
Syntaxe
Le langage PL/SQL alphorm.com™©
Syntaxe
SUBTYPE <nom_type> IS TYPE [ (CONSTRAINT) ] [NOT NULL]
Les structures
Une structure c’est quoi ?
Type composé
Permet de stocker des données structurées = enregistrement
Syntaxe de déclaration
Le langage PL/SQL alphorm.com™©
Syntaxe de déclaration
TYPE <nom_type_structure> IS RECORD (<nom_champ1> TYPE [NOT
NULL] [:=EXPRESSION1], [, . . . ] );
Syntaxe d’utilisation
<nom_enregistrement> <nom_type_structure>
Les tableaux (type composé TABLE)
Les tableaux associatifs
Syntaxe de déclaration
TYPE <nom_type_tableau> IS TABLE OF <type_valeur> [NOT NULL] INDEX
BY { PLS_INTEGER | BINARY_INTEGER | VARCHAR2(TAILLE) };
Syntaxe d’utilisation
Le langage PL/SQL alphorm.com™©
Syntaxe d’utilisation
<nom_variable> <nom_type_tableau>
Les tableaux (type composé TABLE)
Les tableaux pré-dimensionnés
Syntaxe de déclaration
TYPE <nom_type_tableau> IS VARRAY(TAILLE) OF <type_valeur> [NOT
NULL];
Syntaxe d’utilisation
Le langage PL/SQL alphorm.com™©
Syntaxe d’utilisation
<nom_variable> <nom_type_tableau>
Les tableaux (type composé TABLE)
Les actions possibles sur un tableau en PL/SQL
EXISTS(n)
COUNT
FIRST et LAST
PRIOR et NEXT (n)
Le langage PL/SQL alphorm.com™©
PRIOR et NEXT (n)
TRIM (n)
DELETE (n)
Les variables basées
Attribut %TYPE
Permet de référencer: une colonne d’une table ou une variable déjà définie
Syntaxe de déclaration
<nom_variable> {<nom_table.colonne | <nom_variable>}%TYPE;
Le langage PL/SQL alphorm.com™©
Attribut %ROWTYPE
Permet à la variable d’hériter des caractéristiques d’une ligne de table
Syntaxe de déclaration
<nom_variable> {<nom_table> | <nom_variable>}%ROWTYPE;
Récapitulatif sur les variables PL/SQL
et exercices
Le langage PL/SQL alphorm.com™©
et exercices
Le SELECT dans un bloc
PL/SQL
Les variables
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Le SELECT dans un bloc
PL/SQL
Noureddine DRISSI
Expert consultant bases de
données
Objectif
Interroger une bases de données Oracle avec le PL/SQL
Le langage PL/SQL alphorm.com™©
Le SELECT INTO
Syntaxe
SELECT EXPRESSION1 [ , . . . ] INTO VARIABLE1 [ , . . . ] FROM TABLE
<nom_table> [ WHERE PREDICAT ] ;
Le langage PL/SQL alphorm.com™©
BULK COLLECT
Syntaxe
SELECT EXPRESSION1 [ , . . . ] BULK COLLECT INTO TABLEAU1 [ , . . . ] FROM
TABLE <nom_table> [ WHERE PREDICAT ] ;
Le langage PL/SQL alphorm.com™©
Les ordres INSERT, UPDATE et
DELETE
Le langage PL/SQL alphorm.com™©
DELETE
Les ordres INSERT,
UPDATE et DELETE
Accès à la base de
données et ordres SQL
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Les ordres INSERT,
UPDATE et DELETE
Noureddine DRISSI
Expert consultant bases de
données
Objectif
Mettre à jour les données d’une base avec PL/SQL
Le langage PL/SQL alphorm.com™©
La commande INSERT
Syntaxe
INSERT INTO <nom_table> VALUES <variable_enregistrement> ;
Le langage PL/SQL alphorm.com™©
La commande UPDATE
Syntaxe
UPDATE <nom_table> SET <nom_champ> = <variable_enregistrement> [
WHERE PREDICAT ];
Le langage PL/SQL alphorm.com™©
La commande DELETE
Syntaxe
DELETE <nom_table> [ WHERE PREDICAT ];
Le langage PL/SQL alphorm.com™©
Attributs des ordres LMD
Le langage PL/SQL alphorm.com™©
Attributs des ordres
Accès à la base de
données et ordres SQL
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Attributs des ordres
INSERT, UPDATE et DELETE
Noureddine DRISSI
Expert consultant bases de
données
Objectif
Obtenir des informations sur l’exécution des ordres LMD
Le langage PL/SQL alphorm.com™©
Les différents attributs
SQL%FOUND
Type BOOLEAN
• Renvoie TRUE si la précédente exécution (INSERT, UPDATE ou DELETE) a
modifiéé des enregistrements
SQL%NOTFOUND
Le langage PL/SQL alphorm.com™©
SQL%NOTFOUND
Type BOOLEAN
• Renvoie TRUE si la précédente exécution (INSERT, UPDATE ou DELETE)
n’a modifiéé aucun enregistrement
SQL%ROWCOUNT
Renvoie le nombre de ligne modifiés par la précédente exécution
Clause SQL RETURNING
Fonction
Permet de renvoyer les valeurs de champs des enregistrements affectés par
les ordres INSERT, UPDATE ou DELETE
Limites
Inutilisable avec un ordre INSERT qui insère plusieurs enregistrement à partir
Le langage PL/SQL alphorm.com™©
Inutilisable avec un ordre INSERT qui insère plusieurs enregistrement à partir
d’une sous-requête
Impossible d’utiliser « * » pour retourner l’ensemble des champs insérées
dans l’enregistrement
Récapitulatif sur le LMD avec le
langage PL/SQL et exercices
Le langage PL/SQL alphorm.com™©
langage PL/SQL et exercices
Récapitulatif sur le LMD
Accès à la base de
données et ordres SQL
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Récapitulatif sur le LMD
avec le langage PL/SQL et
exercices
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Rappel sur le LMD avec le PL/SQL
Exercices pratiques
Le langage PL/SQL alphorm.com™©
Ce que nous avons étudiés
SELECT INTO
BULK COLLECT INTO
Insert, update et delete dans un programme PL/SQL
Les attributs SQL%FOUND, SQL%NOTFOUND et SQL%ROWCOUNT
Le langage PL/SQL alphorm.com™©
La clause RETURNING
Le LMD dans PL/SQL: exercice 4 (sol_exercice4.txt)
Créez le bloc PL/SQL qui permet d’effectuer les opérations suivantes:
Affichez le nom, la fonction, le salaire et la commission du salarié dont la
fonction est « Directeur »
Affichez le nom, la fonction, le salaire et la comission de tous les salariés
Mettez à jour la commission du salarié « Orlando » ( comission = 5000) et
affichez la nouvelle valeur inserée
Le langage PL/SQL alphorm.com™©
Mettez à jour la commission du salarié « Orlando » ( comission = 5000) et
affichez la nouvelle valeur inserée
Inserez une nouvele categorie (code_cat=77 et libelle_cat= ‘Outillage’ ) puis
affichez les valeurs inserées pour la colonne code_cat et libelle_cat
Instructions de contrôle
Le langage PL/SQL alphorm.com™©
Traitements conditionnels
Les structures de contrôles
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Traitements conditionnels
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Décrire les instructions de contrôle
Apprendre à utiliser les traitements conditionnels
Le langage PL/SQL alphorm.com™©
IF THEN ELSIF ELSE
Syntaxe
IF <condition_plsql> THEN <sequence_de_commandes>
[ ELSEIF <condition_plsql> THEN <sequence_de_commandes>
[ ELSEIF <condition_plsql> THEN <sequence_de_commandes>
[ ELSE <sequence_de_commandes> ]
Le langage PL/SQL alphorm.com™©
[ ELSE <sequence_de_commandes> ]
END IF;
Instruction CASE
Case simple
Syntaxe
CASE <expression>
WHEN <valeur> THEN <sequence_de_commandes>
[ ELSE <sequence_de_commandes> ]
Le langage PL/SQL alphorm.com™©
[ ELSE <sequence_de_commandes> ]
END CASE;
Instruction CASE
Case avec recherche
Syntaxe
CASE
WHEN <condition_plsql> THEN <sequence_de_commandes>
[ ELSE <sequence_de_commandes> ]
Le langage PL/SQL alphorm.com™©
[ ELSE <sequence_de_commandes> ]
END CASE;
Traitements itératifs
Le langage PL/SQL alphorm.com™©
Traitements itératifs
Les structures de contrôles
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Traitements itératifs
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Décrire les instructions de contrôle
Apprendre à utiliser les traitements itératifs
Le langage PL/SQL alphorm.com™©
L’instruction LOOP
Permet de répéter une séquence de commandes
Syntaxe
[ <<nom_boucle>> ]
LOOP
<commandes_plsql>;
Le langage PL/SQL alphorm.com™©
<commandes_plsql>;
EXIT [ <nom_boucle> ] | EXIT WHEN <condition>;
END LOOP;
L’instruction WHILE
Permet de répéter une séquence de commandes tant que la condition
reste vraie
Syntaxe
[ <<nom_boucle>> ]
WHILE <condition> LOOP
Le langage PL/SQL alphorm.com™©
WHILE <condition> LOOP
<commandes_plsql>;
END LOOP [ <nom_boucle> ];
L’instruction FOR
Permet de répéter une séquence de commandes une fois pour chaque
élément dans l’intervalle délimité par deux expressions
Syntaxe
[ <<nom_boucle>> ]
FOR <indice> IN [ REVERSE ] <borne_inférieure> . . <borne_supérieure>LOOP
Le langage PL/SQL alphorm.com™©
FOR <indice> IN [ REVERSE ] <borne_inférieure> . . <borne_supérieure>LOOP
<commandes_plsql>;
END LOOP [ <nom_boucle> ];
Récapitulatif sur les instructions de
contrôle et exercices
Le langage PL/SQL alphorm.com™©
contrôle et exercices
Récapitulatif sur les
Les structures de contrôles
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Récapitulatif sur les
instructions de contrôle et
exercices
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Rappel sur les instructions de contrôle
Exercices
Le langage PL/SQL alphorm.com™©
Ce que nous avons étudiés
IF THEN ELSIF ELSE
L’instruction CASE
La boucle LOOP
La boucle WHILE
Le langage PL/SQL alphorm.com™©
La boucle FOR
Instructions de contrôle: exercice 5 (sol_exercice5.txt)
Créez le bloc PL/SQL qui permet d’effectuer les opérations suivantes:
Simuler une augmentation de salaire des salariés de 10% si leur salaire est
inférieur à la moyenne des salaires
Affichez la liste de tous les articles en utilisant la boucle WHILE et la boucle
FOR
Le langage PL/SQL alphorm.com™©
Les curseurs
Le langage PL/SQL alphorm.com™©
Introduction au curseur
Les curseurs
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Introduction au curseur
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Connaître le rôle d’un curseur
Connaître les types de curseurs
Savoir comment fonctionne un curseur
Le langage PL/SQL alphorm.com™©
Un curseur c’est quoi ?
Permet de manipuler les données ligne par ligne
Permet de contrôler le traitement PL/SQL
Le langage PL/SQL alphorm.com™©
Un curseur c’est quoi ?
Permet de manipuler les données ligne par ligne
Fonctionnement
Créer une zone de contexte pour exécuter la commande et stocker les
informations
Le curseur permet de nommer cette zone de contexte, d’accéder aux
Le langage PL/SQL alphorm.com™©
Le curseur permet de nommer cette zone de contexte, d’accéder aux
informations et éventuellement de contrôler le traitement PL/SQL
Les types de curseurs
Curseurs explicites
Pour traiter les requêtes multilignes
Curseurs implicites
Utilisés pour les autres commandes SQL (lorsqu’une requête ne ramène
qu’une ligne)
Le langage PL/SQL alphorm.com™©
qu’une ligne)
Utilisation d’un curseur
Les étapes de la vie d’un curseur
DECLARATION (DECLARE)
OUVERTURE (OPEN)
DEFILEMENT DES DONNEES (FETCH)
FERMETURE (CLOSE)
Le langage PL/SQL alphorm.com™©
FERMETURE (CLOSE)
Déclaration, ouverture, traitement
des lignes et fermeture d’un curseur
Le langage PL/SQL alphorm.com™©
des lignes et fermeture d’un curseur
Déclaration, ouverture,
Les curseurs
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Déclaration, ouverture,
traitement des lignes et
fermeture d’un curseur
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Savoir déclarer des curseurs
Savoir gérer les curseurs et utiliser les curseurs
Le langage PL/SQL alphorm.com™©
Déclaration
Consite à nommer un curseur et à lui associer une requête
Syntaxe
CURSOR <nom_curseur> [ ( <nom_parametre> TYPE [ , . . . ] IS
<requête_SQL>;
Le langage PL/SQL alphorm.com™©
Ouverture
Dès que le curseur est ouvert l’ordre SQL est exécuté
Syntaxe
OPEN <nom_curseur> [ ( <parametre_entrée [ , . . . ] ) ];
Le langage PL/SQL alphorm.com™©
Traitement des lignes
Pour trouver la ligne suivante dans l’ensemble actif de données, on doit
défiler le curseur par la commande FETCH
Syntaxe
FETCH <nom_curseur> { INTO { <nom_variable> | <nom_enregistrement> [ , . .
. ] } | BULK COLLECT INTO <variable_enregistrement> };
Le langage PL/SQL alphorm.com™©
Déclaration, ouverture, traitement
des lignes et fermeture d’un curseur
Le langage PL/SQL alphorm.com™©
des lignes et fermeture d’un curseur
Ouverture et fermeture
Les curseurs
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Ouverture et fermeture
d’un curseur
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Savoir déclarer des curseurs
Savoir ouvrir et fermer un curseur
Le langage PL/SQL alphorm.com™©
Ouverture
Dès que le curseur est ouvert l’ordre SQL est exécuté
Syntaxe
OPEN <nom_curseur> [ ( <parametre_entrée> [ , . . . ] ) ];
Le langage PL/SQL alphorm.com™©
Fermeture
Chaque curseur explicite ouvert doit être fermé
Syntaxe
CLOSE <nom_curseur> ;
Le langage PL/SQL alphorm.com™©
Traitement des lignes d’un curseur
Le langage PL/SQL alphorm.com™©
Traitement des lignes d’un
Les curseurs
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Traitement des lignes d’un
curseur
Noureddine DRISSI
Expert consultant bases de
données
Objectif
Savoir traiter les lignes d’un curseur
Le langage PL/SQL alphorm.com™©
Traitement des lignes
Pour trouver la ligne suivante dans l’ensemble actif de données, on doit
défiler le curseur par la commande FETCH
Syntaxe
FETCH <nom_curseur> { INTO { <nom_variable> | <nom_enregistrement> [ , . .
. ] } | BULK COLLECT INTO <variable_enregistrement> };
Le langage PL/SQL alphorm.com™©
Etat d’un curseur
Le langage PL/SQL alphorm.com™©
Etat d’un curseur
Les curseurs
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Etat d’un curseur
Noureddine DRISSI
Expert consultant bases de
données
Objectif
Connaître les différents attributs de statut d’un curseur
Le langage PL/SQL alphorm.com™©
Etat d’un curseur
Les attributs des curseurs explicites:
%FOUND
%NOTFOUND
%ISOPEN
%ROWCOUNT
Le langage PL/SQL alphorm.com™©
%ROWCOUNT
Mise à jour des lignes d’un curseur
Le langage PL/SQL alphorm.com™©
Mise à jour des lignes d’un
Les curseurs
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Mise à jour des lignes d’un
curseur
Noureddine DRISSI
Expert consultant bases de
données
Objectif
Savoir mettre à jour les lignes d’un curseur
Le langage PL/SQL alphorm.com™©
Curseurs FOR UPDATE
Option FOR UPDATE
Permet de verrouiller les enregistrements d’un curseur pour modification
Syntaxe
CURSOR <nom_curseur> [ ( <nom_parametre> TYPE := <valeur_par_default> [
, . . . ] ) ] IS <requête_SQL> FOR UPDATE [ OF <nom_colonne> [ , . . . ] ] [ {
Le langage PL/SQL alphorm.com™©
, . . . ] ) ] IS <requête_SQL> FOR UPDATE [ OF <nom_colonne> [ , . . . ] ] [ {
NOWAIT | WAIT <nombre_de_secondes> } ];
Utilisation des curseurs avec une
boucle
Le langage PL/SQL alphorm.com™©
boucle
Utilisation des curseurs
Les curseurs
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Utilisation des curseurs
avec une boucle
Noureddine DRISSI
Expert consultant bases de
données
Objectif
Utiliser un curseur avec une boucle
Le langage PL/SQL alphorm.com™©
Utilisation d’un curseur avec une boucle
Syntaxe
FOR <nom_enregistrement> IN <nom_curseur> LOOP <commandes_plsql>;
END LOOP;
Le langage PL/SQL alphorm.com™©
Les exceptions
Le langage PL/SQL alphorm.com™©
Récapitulatif sur les
Les curseurs
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Récapitulatif sur les
curseurs et exercices
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Rappel sur les curseurs
Exercices
Le langage PL/SQL alphorm.com™©
Ce que nous avons étudiés
DECLARATION (CURSOR) des curseurs
OUVERTURE (OPEN) et FERMETURE (CLOSE) des CURSEURS
TRAITEMENT DES LIGNES (FETCH) des curseurs
Les attributs de statut des curseurs (%FOUND, %NOTFOUND, %ISOPEN
et %ROWCOUNT)
Le langage PL/SQL alphorm.com™©
et %ROWCOUNT)
La mise à jour des lignes d’un curseur (FOR UPDATE)
Les curseurs et la variante de la boucle FOR
Les curseurs: exercice 6 (sol_exercice6.txt)
Créez un bloc PL/SQL qui permet d’afficher toutes les commandes de la
table « commandes » à l’aide d’un curseur utilisant la boucle FOR.
Créez un bloc PL/SQL qui permet d’afficher le nombre de commandes
par client. Le pays de résidence du client sera passé en paramètre
(argument) au curseur avec une valeur par défaut. Utilisez la boucle FOR
avec votre curseur.
Le langage PL/SQL alphorm.com™©
avec votre curseur.
Créez un bloc PL/SQL qui permet de mettre à jour (à l’aide d’un curseur)
la date d’envoi des commandes à la date du jour et l’état de la
commande à « TRAITEE » pour les commandes dont la date d’envoi est
nul.
Les exceptions
Le langage PL/SQL alphorm.com™©
Les types d’exceptions
Les exceptions
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Les types d’exceptions
Noureddine DRISSI
Expert consultant bases de
données
Objectif
Connaître les types d’exceptions
Le langage PL/SQL alphorm.com™©
Les quatre types d’exception
Les exceptions systèmes nommées
Un nom est attribué aux exceptions par Oracle
Déclenchées à la suite d’une erreur PL/SQL ou Oracle
Les exceptions utilisateurs nommées
Nommées lors de leur déclaration par le développeur
Le langage PL/SQL alphorm.com™©
Nommées lors de leur déclaration par le développeur
Déclenchées à la suite d’erreurs dans le code applicatif
Les exceptions système anonymes
Non nommées
Déclenchées à la suite d’une erreur PL/SQL mais non nommées
Les quatre types d’exception
Les exceptions utilisateur anonymes
Définies et déclenchées par le développeur
Code compris entre - 20 000 et – 20 999
Le langage PL/SQL alphorm.com™©
Création d’une exception dans un
bloc PL/SQL
Le langage PL/SQL alphorm.com™©
bloc PL/SQL
Création d’une exception
Les exceptions
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Création d’une exception
dans un bloc PL/SQL
Noureddine DRISSI
Expert consultant bases de
données
Objectif
Gérer une exception dans un bloc PL/SQL
Le langage PL/SQL alphorm.com™©
Création d’une exception
Syntaxe
DECLARE
. . .
BEGIN
. . .
EXCEPTION
Le langage PL/SQL alphorm.com™©
WHEN <nom_exception> [ OR <nom_exception> . . . ]
THEN <instructions_plsql>;
. . .
[ WHEN OTHERS THEN <instructions_plsql> ; ]
END;
Les exceptions prédéfinies
Se trouve dans le package STANDARD de PL/SQL
Quelques exceptions prédéfinies
• NO_DATA_FOUND (ORA-01403 SQLCODE= +100)
• CURSOR_ALREADY_OPEN (ORA-6511 SQLCODE= -6511)
• ZERO_DIVIDE (ORA-01476 SQLCODE = -1476)
Le langage PL/SQL alphorm.com™©
• ZERO_DIVIDE (ORA-01476 SQLCODE = -1476)
• CASE _NOT_FOUND (ORA-6592 SQLCODE = -6592)
• . . .
Les exceptions anonymes
Le langage PL/SQL alphorm.com™©
Les exceptions anonymes
Les exceptions
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Les exceptions anonymes
Noureddine DRISSI
Expert consultant bases de
données
Objectif
Savoir utiliser les exceptions anonymes
Le langage PL/SQL alphorm.com™©
Les fonctions SQLCODE et SQLERRM
SQLCODE
Permet de retrouver le code des exceptions Oracle
SQLERRM
Permet de retrouver le message des exceptions Oracle
Le langage PL/SQL alphorm.com™©
PRAGMA EXCEPTION_INIT
Fonction
Permet d’associer une exception utilisateur à un code d’erreur Oracle
Syntaxe d’utilisation
DECLARE
<nom_exception> EXCEPTION;
Le langage PL/SQL alphorm.com™©
<nom_exception> EXCEPTION;
PRAGMA EXCEPTION_INIT (<nom_exception>, <code_erreur_oracle>);
BEGIN
. . .
EXCEPTION
WHEN <nom_exception> THEN
<instructions_plsql>;
END;
Les exceptions utilisateurs
Le langage PL/SQL alphorm.com™©
Les exceptions utilisateurs
Les exceptions
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Les exceptions utilisateurs
Noureddine DRISSI
Expert consultant bases de
données
Objectif
Savoir créer et utiliser des exceptions utilisateur
Le langage PL/SQL alphorm.com™©
Rôle des exceptions utilisateur
Permettent de gérer les erreurs applicatives
Le langage PL/SQL alphorm.com™©
Syntaxe
DECLARE
<nom_exception> EXCEPTION;
PRAGMA EXCEPTION_INIT (<nom_exception>, <code_erreur_oracle>);
BEGIN
. . .
Le langage PL/SQL alphorm.com™©
. . . RAISE <nom_exception>
. . .
EXCEPTION
WHEN <nom_exception> THEN
<instructions_plsql>;
END;
RAISE_APPLICATION_ERROR
Permet de faire gérer une erreur survenue sur le serveur par un client
Le langage PL/SQL alphorm.com™©
La portée des exceptions
Quitte le bloc dans lequel il est déclenchée et recherche une exception
dans les blocs supérieurs
Le langage PL/SQL alphorm.com™©
Récapitulatif sur les exceptions et
exercices
Le langage PL/SQL alphorm.com™©
exercices
Récapitulatif sur les
Les exceptions
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Récapitulatif sur les
exceptions et exercices
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Récapitulatif sur les exceptions
Exercices
Le langage PL/SQL alphorm.com™©
Ce que nous avons étudiés
Les types d’exceptions
La création et le déclenchement d’une exception dans un bloc PL/SQL
Les exceptions anonymes
Les exceptions utilisateurs
Le langage PL/SQL alphorm.com™©
Les exceptions: exercice 7 (sol_exercice7.txt)
Créez un bloc PL/SQL qui permet de modifier la comission d’un salarié
et qui déclenche une exception si la comission est supérieur au salaire
Créez un bloc PL/SQL qui permet de déclencher une exception « ORA-
0292: violation de contrainte (.) d’intégrité ... » lorsque l’on essaye de
supprimer un salarié qui a traité des commandes
Le langage PL/SQL alphorm.com™©
Les programmes stockés
Le langage PL/SQL alphorm.com™©
Les procédures stockées
Les programmes stockés
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Les procédures stockées
Noureddine DRISSI
Expert consultant bases de
données
Objectif
Créer des procédures
Le langage PL/SQL alphorm.com™©
Qu’est-ce qu’une procédure stockée ?
Un sous-programme
Stokée dans la base de données sous format compilé
Effectue un traitement
Peut recevoir des arguments
Le langage PL/SQL alphorm.com™©
Création d’une procédure stockée
Syntaxe
[ CREATE [ OR REPLACE ] ] PROCEDURE <nom_procedure> [ (
<nom_argument> [ { IN | OUT | IN OUT } ] TYPE [ , . . . ] ) ]
{ IS | AS }
BEGIN
Le langage PL/SQL alphorm.com™©
BEGIN
. . .
EXCEPTION <nom_exception> THEN <instructions>;
END [ <nom_procedure> ];
Appel d’une procédure
Syntaxes
<nom_procedure> [ (<argument1>, . . . ] ) ] ;
CALL <nom_procedure> [ (<argument1>, . . . ] ) ] ;
EXEC | EXECUTE <nom_procedure> [ (<argument1>, . . . ] ) ] ;
Le langage PL/SQL alphorm.com™©
Suppression d’une procédure
Syntaxe
DROP PROCEDURE <nom_procedure>;
Le langage PL/SQL alphorm.com™©
Les fonctions
Le langage PL/SQL alphorm.com™©
Les fonctions
Les programmes stockés
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Les fonctions
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Connaître les caractéristiques d’une fonction
Créer et utiliser des fonctions
Le langage PL/SQL alphorm.com™©
Qu’est-ce qu’une fonction ?
Identique à une procédure à la différence qu'elle retourne une valeur
Stokée dans la base de données sous format compilé
Peut recevoir des arguments (paramètres)
Le langage PL/SQL alphorm.com™©
Création d’une fonction
Syntaxe
[ CREATE [ OR REPLACE ] ] FONCTION <nom_fonction> [ ( <nom_argument> [
{ IN | OUT | IN OUT } ] TYPE [ , . . . ] ) ] RETURN <type_valeur>
{ IS | AS }
BEGIN
Le langage PL/SQL alphorm.com™©
BEGIN
. . .
RETURN EXPRESSION;
EXCEPTION <nom_exception> THEN <instructions>;
END [ <nom_fonction> ];
Appel d’une fonction
Syntaxes
En PL/SQL
BEGIN
<nom_variable> := <nom_fonction>[ (<argument1>, . . . ] ) ] ;
END;
Le langage PL/SQL alphorm.com™©
END;
En SQL
SELECT <nom_fonction>[ (<argument1>, . . . ] ) ] ;
Suppression d’une fonction
Syntaxe
DROP FONCTION <nom_fonction> ;
Le langage PL/SQL alphorm.com™©
Les arguments
Le langage PL/SQL alphorm.com™©
Les arguments
Les programmes stockés
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Les arguments
Noureddine DRISSI
Expert consultant bases de
données
Objectif
Savoir déclarer et utiliser des arguments dans une procédure ou une
fonction
Le langage PL/SQL alphorm.com™©
Déclaration des arguments
Syntaxe
<nom_argument> [ { IN | OUT | IN OUT } ] [ NOCOPY ] TYPE [ , . . . ]
IN indique que le paramètre transmis par le programme appelant n'est pas modifiable par la
fonction
OUT indique que le paramètre est modifiable par la procédure
IN OUT indique que le paramètre est transmis par le programme appelant et renseigné par la
Le langage PL/SQL alphorm.com™©
IN OUT indique que le paramètre est transmis par le programme appelant et renseigné par la
fonction
NOCOPY indique que le paramètre est transmis par référence (pointeur) et non par copie de la
valeur
TYPE représente le type SQL ou PL/SQL du paramètre
:= représente le symbole d'assignation d'une valeur par défaut
DEFAULT identique à :=
Maintenance des programmes
stockés
Le langage PL/SQL alphorm.com™©
stockés
Maintenance des
Les programmes stockés
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Maintenance des
programmes stockés
Noureddine DRISSI
Expert consultant bases de
données
Objectif
Savoir maintenir les programmes stockés
Le langage PL/SQL alphorm.com™©
La compilation
Syntaxe
ALTER PROCEDURE <nom_procédure> COMPILE;
ALTER FUNCTION <nom_fonction> COMPILE;
Le langage PL/SQL alphorm.com™©
Les meta-données
Les vues
USER_SOURCE pour les objets appartenant au schéma
ALL_SOURCE pour les objets appartenant aux schémas accessibles
DBA_SOURCE pour les objets appartenant à tous les schémas
Le langage PL/SQL alphorm.com™©
Récapitulatif sur les programmes
stockés et exercices
Le langage PL/SQL alphorm.com™©
stockés et exercices
Récapitulatif sur les
Les programmes stockés
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Récapitulatif sur les
programmes stockés et
exercices
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Rappel sur les programmes stockés
Exercices
Le langage PL/SQL alphorm.com™©
Ce que nous avons étudiés
Les procédures stockés avec et sans argument
Les fonctions avec et sans arguments
Les fonctions renvoyant une valeur scalaire
Les fonctions renvoyant une table
Les arguments avec le mode d’affection (IN, OUT, IN OUT, NOCOPY)
Le langage PL/SQL alphorm.com™©
Les arguments avec le mode d’affection (IN, OUT, IN OUT, NOCOPY)
Les programmes stockés: exercice 8 (sol_exercice8.txt)
Créez une procédure stockée nommée « updatequantite » qui met à
jour la quantité en stock d’un article. La référence de l’article et la
quantité seront passés en paramètres (arguments) à la procédure
stockée.
Créez une fonction nommée « valeurstock » qui retourne la valeur des
articles en stock.
Le langage PL/SQL alphorm.com™©
articles en stock.
Créez une fonction nommée « articleparcategorie » non stockée en
base qui retourne le nombre d’article par catégorie pour toutes les
catégories et qui les affichent.
Les packages
Le langage PL/SQL alphorm.com™©
Introduction aux packages
Les packages
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Introduction aux packages
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Décrire la structure d’un package
Comprendre le fonctionnement des packages
Le langage PL/SQL alphorm.com™©
Qu’est-ce qu’un package ?
Un regroupement de procédures ou de fonctions
Contient deux sections
Une section de déclaration
Une section de traitement
Le langage PL/SQL alphorm.com™©
Les avantages de l’utilisation d’un package
Protection des données
Amélioration des performances
Persistance des objets
Le langage PL/SQL alphorm.com™©
PACKAGE
Structure d’un package
Déclaration:
PROCEDURES / FONCTIONS
VARIABLES / TYPE VARIABLE
CURSEURS
Spécification
de package
Eléments
publics
Le langage PL/SQL alphorm.com™©
Corps de
package
PROCEDURE
BEGIN
. . .
END;
FONCTION
BEGIN
. . .
END;
VARIABLES
CURSEURS
Eléments
privés
Syntaxe de création d’un package
CREATE [ OR REPLACE ] PACKAGE <nom_package>
{ IS | AS }
[ Déclaration des variables et des types ]
[ Déclaration des curseurs ]
Le langage PL/SQL alphorm.com™©
[ Déclaration des procédures et des fonctions ]
END <nom_package>;
Syntaxe de création d’un corps de package
CREATE [ OR REPLACE ] PACKAGE BODY <nom_package>
{ IS | AS }
[ Déclaration des variables et des types ]
[ Déclaration des curseurs ]
[ Déclaration des procédures et des fonctions ]
Le langage PL/SQL alphorm.com™©
[ Déclaration des procédures et des fonctions ]
[ BEGIN
<instructions_plsql>;
[ EXCEPTIONS
<gestion_exception>
END <nom_package>;
Utilisation des curseurs dans les
packages
Le langage PL/SQL alphorm.com™©
packages
Utilisation des curseurs
Les packages
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Utilisation des curseurs
dans les packages
Noureddine DRISSI
Expert consultant bases de
données
Objectif
Utiliser des curseurs dans les packages
Le langage PL/SQL alphorm.com™©
Spécification du curseur
Obligation d’utiliser la clause RETURN avec le curseur associé
Un enregistrement %ROWTYPE
Un enregistrement défini par l’utilisateur
Le langage PL/SQL alphorm.com™©
Maintenance des packages
Le langage PL/SQL alphorm.com™©
Maintenance des
Les packages
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Maintenance des
packages
Noureddine DRISSI
Expert consultant bases de
données
Objectif
Modifier et supprimer un package
Le langage PL/SQL alphorm.com™©
Syntaxe de modification d’un package
ALTER PACKAGE <nom_package> COMPILE [ PACKAGE | BODY ] ;
Le langage PL/SQL alphorm.com™©
Syntaxe de suppression d’un package
DROP [ PACKAGE | BODY ] <nom_package> ;
Le langage PL/SQL alphorm.com™©
Récapitulatif sur les packages et
exercices
Le langage PL/SQL alphorm.com™©
exercices
Récapitulatif sur les
Les packages
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Récapitulatif sur les
packages et exercices
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Rappel sur les packages
Exercices
Le langage PL/SQL alphorm.com™©
Ce que nous avons étudiés
Ce qu’est un package
La structure d’un package
Spécification de package
Corps de package
Utilisation des fonctions, procédures et des curseurs dans un package
Le langage PL/SQL alphorm.com™©
Utilisation des fonctions, procédures et des curseurs dans un package
Utiliser les objets d’un package
Maintenir un package
Les packages: exercice 9 (sol_exercice9.txt)
Créez un package nommé gestEmp avec les objets suivants:
Un fonction qui contrôle l’existence d’un salarié à partir de son numéro.
Une procédure qui permet de supprimer un salarié à partir de son numéro.
Une procédure qui permet d’augmenter le salaire d’un salarié. La procédure
doit reçevoir deux arguments: le premier est le numéro du salarié, le
deuxième le pourcentage d’augmention).
Le langage PL/SQL alphorm.com™©
doit reçevoir deux arguments: le premier est le numéro du salarié, le
deuxième le pourcentage d’augmention).
Une procédure qui affiche tous les salariés dont le salaire est supérieur à la
moyenne des salaires (cette procédure devra s’appuyer sur un curseur
nommé « cur_sal »)
Les triggers (déclencheurs)
Le langage PL/SQL alphorm.com™©
Introduction
Les déclencheurs
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Introduction
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Décrire un déclencheur
Connaître les caractéristiques d’un déclencheur
Le langage PL/SQL alphorm.com™©
Un déclencheur c’est quoi ?
Définit une action qui doit se déclencher lorsqu’un évènement survient
sur la base de données
Objet stocké en base
Associé à une table ou à une vue
Pas de COMMIT/ROLLBACK dans un déclencheur
Le langage PL/SQL alphorm.com™©
Pas de COMMIT/ROLLBACK dans un déclencheur
Avantage du déclencheur
Ajouter des contraintes sur les valeurs des colonnes d’une table
Réaliser un audit des changements sur les données (logs)
Ajout des règles de gestion
Publier des informations concernant divers évènements
Le langage PL/SQL alphorm.com™©
Les niveaux d’exécutions
De niveau table (STATEMENT)
Exécuté une seule fois quelque soit le nombre de ligne modifié
De niveau enregistrement (ROW)
Exécuté séparément pour chaque ligne modifiée
FOR EACH ROW
Le langage PL/SQL alphorm.com™©
FOR EACH ROW
Les types de déclencheurs ?
Les déclencheurs LMD
Avant ou après
INSERT, UPDATE ou DELETE
Les déclencheurs INSTEAD OF
De niveau ligne seulement
Le langage PL/SQL alphorm.com™©
De niveau ligne seulement
S’exécute à la place de l’instruction qui a déclenché le trigger
Les déclencheurs SYSTEME
Démarrage ou arrêt d’une base
A la création, suppression ou modification d’un objet (DDL)
A la connexion ou déconnexion d’un utilisateur
Syntaxe de création
CREATE [ OR REPLACE ] TRIGGER <nom_trigger>
{ BEFORE | AFTER | INSTEAD OF } <nom_evenement1> [ <nomevenement2> ]
[ CLAUSE_REFERENCING] [ WHEN CONDITION ] [ FOR EACH ROW ]
[ DECLARE . . . ]
BEGIN
Le langage PL/SQL alphorm.com™©
. . .
[ EXCEPTION . . . ]
END [ <nom_trigger> ] ;
Les déclencheurs LMD
Le langage PL/SQL alphorm.com™©
Les déclencheurs LMD
Les déclencheurs
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Les déclencheurs LMD
Noureddine DRISSI
Expert consultant bases de
données
Objectif
Créer des déclencheurs LMD
Le langage PL/SQL alphorm.com™©
Rappel: syntaxe de création
CREATE [ OR REPLACE ] TRIGGER <nom_trigger>
{ BEFORE | AFTER | INSTEAD OF } <nom_evenement1> [ OR
<nomevenement2> ]
[ CLAUSE_REFERENCING] [ WHEN CONDITION ] [ FOR EACH ROW ]
[ DECLARE . . . ]
Le langage PL/SQL alphorm.com™©
BEGIN
. . .
[ EXCEPTION . . . ]
END [ <nom_trigger> ] ;
Déclenchement
Ce qui déclenche le déclencheur
INSERT
AVANT ou APRES insertion
UPDATE
Le langage PL/SQL alphorm.com™©
AVANT ou APRES mise à jour
Possibilité UPDATE TO <champ1> [ , <champN> ]
DELETE
AVANT ou APRES suppression
Caractéristiques
Doit posséder un nom unique
La définition du trigger porte sur:
une est une seule table
pas une vue.
Le langage PL/SQL alphorm.com™©
Nombre de trigger par table
Possibilité de créer un nombre illimité de déclencheurs
Possibilité de définir plusieurs déclencheurs d’un même type
Exécution séquentielle des déclencheurs s’il en existe plusieurs
Le langage PL/SQL alphorm.com™©
Le niveau d’exécution
Le langage PL/SQL alphorm.com™©
Le niveau d’exécution
Les déclencheurs
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Le niveau d’exécution
Noureddine DRISSI
Expert consultant bases de
données
Objectif
Comprendre le niveau d’exécution d’un déclencheur
Le langage PL/SQL alphorm.com™©
Rappel: syntaxe de création
CREATE [ OR REPLACE ] TRIGGER <nom_trigger>
{ BEFORE | AFTER | INSTEAD OF } <nom_evenement1> [ <nomevenement2> ]
[ CLAUSE_REFERENCING] [ WHEN CONDITION ] [ FOR EACH ROW ]
[ DECLARE . . . ]
BEGIN
Le langage PL/SQL alphorm.com™©
BEGIN
. . .
[ EXCEPTION . . . ]
END [ <nom_trigger> ] ;
Niveaux d’exécution
De niveau table (STATEMENT)
Exécuté une seule fois quelque soit le nombre de ligne modifié
De niveau enregistrement (ROW)
Exécuté séparément pour chaque ligne modifiée
FOR EACH ROW
Le langage PL/SQL alphorm.com™©
FOR EACH ROW
Accès aux valeurs via :OLD et :NEW
Le langage PL/SQL alphorm.com™©
Accès aux valeurs via :OLD
Les déclencheurs
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Accès aux valeurs via :OLD
et :NEW
Noureddine DRISSI
Expert consultant bases de
données
Objectif
Créer des déclencheurs en utilisant les valeurs des attributs :OLD et
:NEW
Le langage PL/SQL alphorm.com™©
Valeur des attributs
Possibilité d’accéder à la valeur des attributs avant et après modification
:OLD.nom_attribut (permet d’accéder à la valeur avant
modification)
:NEW.nom_attribut (permet d’accéder à la valeur après
modification)
Le langage PL/SQL alphorm.com™©
Précisions
INSERT
Pas d’accès à l’élément OLD (n’existe pas)
UPDATE
Accès possible à l’élément OLD et NEW
Le langage PL/SQL alphorm.com™©
DELETE
Pas d’accès à l’élément NEW (n’existe plus)
Utilisable uniquement avec un déclencheur de niveau enregistrement
La clause REFERENCING
Fonction
Permet de créer un alias pour « :OLD » et « :NEW »
SYNTAXE
REFERENCING [ OLD AS <nom_ancien> ] [ NEW AS <nom_nouveau> ]
Le langage PL/SQL alphorm.com™©
Déclenchement conditionnel et les
prédicats
Le langage PL/SQL alphorm.com™©
prédicats
Déclenchement
Les déclencheurs
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Déclenchement
conditionnel et les prédicats
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Créer un déclencheur avec un déclenchement conditionnel (WHEN)
Créer un déclencheur avec les prédicats
Le langage PL/SQL alphorm.com™©
Clause WHEN
Ne s’applique qu’aux déclencheurs de niveau enregistrement
Syntaxe
WHEN <condition>
Le langage PL/SQL alphorm.com™©
Les fonctions prédicats
INSERTING
Retourne TRUE si l’instruction LMD est un INSERT
UPDATING
Retourne TRUE si l’instruction LMD est un UPDATE
Le langage PL/SQL alphorm.com™©
DELETING
Retourne TRUE si l’instruction LMD est un DELETE
Complément sur les déclencheurs
Le langage PL/SQL alphorm.com™©
Complément sur les
Les déclencheurs
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Complément sur les
déclencheurs
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Connaître l’utilisation des déclencheurs INSTEAD OF
Utilisation de l’ordre PRAGMA AUTONOMOUS_TRANSACTION
Réaliser les tâches d’exploitation des déclencheurs
Le langage PL/SQL alphorm.com™©
Les déclencheurs INSTEAD OF
Définis uniquement sur des objets vues
S’exécute à la place de l’ordre LMD qui a déclenché le déclencheur
Le langage PL/SQL alphorm.com™©
Transaction autonome
Les déclencheurs de niveau ligne, ne peuvent pas lire ou modifier la
table (table en mutation) sur laquelle porte le déclencheur
Les déclencheurs de niveau table peuvent lire et modifier la table sur
laquelle porte le déclencheur
Possibilité d’utiliser la directive PRAGMA
AUTONOMOUS_TRANSACTION
Le langage PL/SQL alphorm.com™©
AUTONOMOUS_TRANSACTION
Possibilité d’utiliser les commandes « COMMIT » et « ROLLBACK »
Autres caractéristiques
Triggers en cascade
Un trigger peut provoquer le déclenchement d'un autre trigger.
ORACLE autorise jusqu'à 32 triggers en cascade à un moment donné.
Limite
Un trigger ligne ne peut pas lire et/ou modifier la table concernée (appelée
Le langage PL/SQL alphorm.com™©
Un trigger ligne ne peut pas lire et/ou modifier la table concernée (appelée
table mutante) par l'instruction (INSERT, UPDATE ou DELETE) qui a déclenché
le trigger.
Création de déclencheurs
Conditions nécessaires pour créer un trigger
Privilège CREATE TRIGGER
Posséder (ou privilege ALTER, ALTER ANY) la table sur laquelle on veut définir
le déclencheur
Modification de triggers
Le langage PL/SQL alphorm.com™©
Modification de triggers
CREATE TRIGGER suivie de OR REPLACE ou bien on supprime le trigger
(DROP TRIGGER nomtrigger) et on le crée à nouveau.
Activation et désactivation
Un trigger peut être activé ou désactivé.
Si désactivé, ORACLE le stocke mais l’ignore.
Possibilité de désactiver un trigger si :
il référence un objet non disponible
on veut charger rapidement un volume de données important ou recharger
Le langage PL/SQL alphorm.com™©
on veut charger rapidement un volume de données important ou recharger
des données déjà contrôlées.
Par défaut, un trigger est activé dès sa création.
Activation et désactivation
Pour désactiver ou activer un trigger , on utilise l’instruction ALTER
ALTER TRIGGER <nomtrigger> DISABLE;
ALTER TABLE <nomtable> DISABLE ALL TRIGGERS;
ALTER TRIGGER <nomtrigger> ENABLE;
ALTER TABLE <nomtable> ENABLE ALL TRIGGERS;
Le langage PL/SQL alphorm.com™©
ALTER TABLE <nomtable> ENABLE ALL TRIGGERS;
Gestion des exceptions
La procédure RAISE_APPLICATION_ERROR
(error_number,error_message)
error_number doit être un entier compris entre -20000 et -20999
error_message doit être une chaîne de 500 caractères maximum.
Quand cette procédure est appelée, elle termine le trigger, défait la
transaction (ROLLBACK), renvoie un numéro d'erreur défini par l'utilisateur et
Le langage PL/SQL alphorm.com™©
Quand cette procédure est appelée, elle termine le trigger, défait la
transaction (ROLLBACK), renvoie un numéro d'erreur défini par l'utilisateur et
un message à l'application.
Récapitulatif sur les déclencheurs et
exercices
Le langage PL/SQL alphorm.com™©
exercices
Récapitulatif sur les
Les déclencheurs
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Récapitulatif sur les
déclencheurs et exercices
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Rappel sur les déclencheurs
Exercices
Le langage PL/SQL alphorm.com™©
Ce que nous avons étudiés
Les déclencheurs LMD
Le niveau d’exécution des déclencheurs (INSTRUCTION ou LIGNE)
Comment accéder aux valeurs via OLD et NEW
Déclenchement conditionnel (WHEN)
Le langage PL/SQL alphorm.com™©
Les prédicats (INSERTING, UPDATING et DELETING)
Les déclencheurs INSTEAD OF
La directive PRAGMA AUTONOMOUS_TRANSACTION
Les tâches d’exploitation des déclencheurs
Les déclencheurs: exercice 10 (sol_exercice10.txt)
Créez un déclencheur LMD nommé trigLogClients qui se déclenche
après toute instruction INSERT, UPDATE ou DELETE sur la table
« clients ». Le trigger doit tracer les informartions ci-dessous dans une
table que vous aurez crée au préalable:
La date d’exécution et le user ayant effectué l’instruction
La valeur AVANT et APRES pour les colonnes NUMERO_CLI, NOM, ADRESSE,
Le langage PL/SQL alphorm.com™©
La valeur AVANT et APRES pour les colonnes NUMERO_CLI, NOM, ADRESSE,
CODE_POSTAL, VILLE et TELEPHONE
L’instruction qui à déclenchée le déclencheur (INSERT, UPDATE ou DELETE)
Conclusion
Le langage PL/SQL alphorm.com™©
Le mot de la fin
Conclusion
Le langage PL/SQL alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Le mot de la fin
Noureddine DRISSI
Expert consultant bases de
données
Objectifs
Maîtriser le langage PL/SQL
Utiliser des traitements stockés et des triggers dans les applications
Le langage PL/SQL alphorm.com™©
Plan de cours
Module 1: Présentation du PL/SQL
Module 2: Les variables
Module 3: Accès à la base de données et ordres SQL
Module 4: Les structures de contrôle
Module 5: Les curseurs
Le langage PL/SQL alphorm.com™©
Module 5: Les curseurs
Module 6: Gestion des erreurs
Module 7: Les programmes stockés
Module 8: Les triggers
Module 9: Les packages
Module 10: Les déclencheurs
Conclusion
A venir:
Le transact SQL
La modélisation au sens MERISE
Le langage PL/SQL alphorm.com™©
FIN
Merci pour votre attention
Conclusion
Le langage PL/SQL alphorm.com™©
Merci pour votre attention

Más contenido relacionado

La actualidad más candente

JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java Youness Boukouchi
 
Alphorm.com Formation Active directory 2019 : Configuration et Bonne pratiques
Alphorm.com Formation Active directory 2019 : Configuration et Bonne pratiquesAlphorm.com Formation Active directory 2019 : Configuration et Bonne pratiques
Alphorm.com Formation Active directory 2019 : Configuration et Bonne pratiquesAlphorm
 
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveauAlphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveauAlphorm
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootDNG Consulting
 
Alphorm.com Formation le langage SQL
Alphorm.com  Formation le langage SQLAlphorm.com  Formation le langage SQL
Alphorm.com Formation le langage SQLAlphorm
 
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et Web
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et WebAlphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et Web
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et WebAlphorm
 
alphorm.com - Formation SQL Server 2012 (70-462)
alphorm.com - Formation SQL Server 2012 (70-462)alphorm.com - Formation SQL Server 2012 (70-462)
alphorm.com - Formation SQL Server 2012 (70-462)Alphorm
 
Alphorm.com Microsoft AZURE
Alphorm.com Microsoft AZUREAlphorm.com Microsoft AZURE
Alphorm.com Microsoft AZUREAlphorm
 
Securité des applications web
Securité des applications webSecurité des applications web
Securité des applications webMarcel TCHOULEGHEU
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLwebreaker
 
alphorm.com - Formation Cisco ICND1-CCENT (100-101)
alphorm.com - Formation Cisco ICND1-CCENT (100-101)alphorm.com - Formation Cisco ICND1-CCENT (100-101)
alphorm.com - Formation Cisco ICND1-CCENT (100-101)Alphorm
 
Sécurité des Applications WEB -LEVEL1
 Sécurité des Applications WEB-LEVEL1 Sécurité des Applications WEB-LEVEL1
Sécurité des Applications WEB -LEVEL1Tarek MOHAMED
 
Alphorm.com Formation Nouveautés Windows Server 2016
Alphorm.com Formation Nouveautés Windows Server 2016Alphorm.com Formation Nouveautés Windows Server 2016
Alphorm.com Formation Nouveautés Windows Server 2016Alphorm
 
Alphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm
 
T1 corrections-qcm
T1 corrections-qcmT1 corrections-qcm
T1 corrections-qcminfcom
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...ENSET, Université Hassan II Casablanca
 

La actualidad más candente (20)

JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java
 
Alphorm.com Formation Active directory 2019 : Configuration et Bonne pratiques
Alphorm.com Formation Active directory 2019 : Configuration et Bonne pratiquesAlphorm.com Formation Active directory 2019 : Configuration et Bonne pratiques
Alphorm.com Formation Active directory 2019 : Configuration et Bonne pratiques
 
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveauAlphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Alphorm.com Formation le langage SQL
Alphorm.com  Formation le langage SQLAlphorm.com  Formation le langage SQL
Alphorm.com Formation le langage SQL
 
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et Web
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et WebAlphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et Web
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et Web
 
alphorm.com - Formation SQL Server 2012 (70-462)
alphorm.com - Formation SQL Server 2012 (70-462)alphorm.com - Formation SQL Server 2012 (70-462)
alphorm.com - Formation SQL Server 2012 (70-462)
 
Alphorm.com Microsoft AZURE
Alphorm.com Microsoft AZUREAlphorm.com Microsoft AZURE
Alphorm.com Microsoft AZURE
 
Securité des applications web
Securité des applications webSecurité des applications web
Securité des applications web
 
Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
alphorm.com - Formation Cisco ICND1-CCENT (100-101)
alphorm.com - Formation Cisco ICND1-CCENT (100-101)alphorm.com - Formation Cisco ICND1-CCENT (100-101)
alphorm.com - Formation Cisco ICND1-CCENT (100-101)
 
Tp n 4 linux
Tp n 4 linuxTp n 4 linux
Tp n 4 linux
 
Sécurité des Applications WEB -LEVEL1
 Sécurité des Applications WEB-LEVEL1 Sécurité des Applications WEB-LEVEL1
Sécurité des Applications WEB -LEVEL1
 
Alphorm.com Formation Nouveautés Windows Server 2016
Alphorm.com Formation Nouveautés Windows Server 2016Alphorm.com Formation Nouveautés Windows Server 2016
Alphorm.com Formation Nouveautés Windows Server 2016
 
Alphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et Administration
 
T1 corrections-qcm
T1 corrections-qcmT1 corrections-qcm
T1 corrections-qcm
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 
Support de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfiSupport de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfi
 

Destacado

Alphorm.com Formation Certified Network Defender 1/2 : Réussir la certification
Alphorm.com Formation Certified Network Defender 1/2 : Réussir la certificationAlphorm.com Formation Certified Network Defender 1/2 : Réussir la certification
Alphorm.com Formation Certified Network Defender 1/2 : Réussir la certificationAlphorm
 
Alphorm.com Formation Cisco CCNA v3 : mise à jour
Alphorm.com Formation Cisco CCNA v3 : mise à jourAlphorm.com Formation Cisco CCNA v3 : mise à jour
Alphorm.com Formation Cisco CCNA v3 : mise à jourAlphorm
 
Alphorm.com formation Red Hat (RH134)
Alphorm.com formation Red Hat (RH134)Alphorm.com formation Red Hat (RH134)
Alphorm.com formation Red Hat (RH134)Alphorm
 
alphorm.com - Formation UML
alphorm.com - Formation UMLalphorm.com - Formation UML
alphorm.com - Formation UMLAlphorm
 
Alphorm.com Formation RDS Windows Server 2008 R2 - Guide du consultant
Alphorm.com Formation  RDS Windows Server 2008 R2 - Guide du consultantAlphorm.com Formation  RDS Windows Server 2008 R2 - Guide du consultant
Alphorm.com Formation RDS Windows Server 2008 R2 - Guide du consultantAlphorm
 
alphorm.com - Formation PostgreSQL administration
alphorm.com - Formation PostgreSQL administrationalphorm.com - Formation PostgreSQL administration
alphorm.com - Formation PostgreSQL administrationAlphorm
 
Alphorm.com formation-GNS3
Alphorm.com formation-GNS3Alphorm.com formation-GNS3
Alphorm.com formation-GNS3Alphorm
 
Alphorm.com Support de la Formation Cisco CCNP SWITCH (examen 300-115)
Alphorm.com Support de la Formation Cisco CCNP SWITCH (examen 300-115)Alphorm.com Support de la Formation Cisco CCNP SWITCH (examen 300-115)
Alphorm.com Support de la Formation Cisco CCNP SWITCH (examen 300-115)Alphorm
 
Alphorm.com Formation MySQL Administration(1Z0-883)
Alphorm.com   Formation MySQL Administration(1Z0-883)Alphorm.com   Formation MySQL Administration(1Z0-883)
Alphorm.com Formation MySQL Administration(1Z0-883)Alphorm
 
Alphorm.com Formation Microsoft SQL Server 2016 Business Intelligence (SSIS)
Alphorm.com Formation Microsoft SQL Server 2016 Business Intelligence (SSIS)Alphorm.com Formation Microsoft SQL Server 2016 Business Intelligence (SSIS)
Alphorm.com Formation Microsoft SQL Server 2016 Business Intelligence (SSIS)Alphorm
 
Alphorm.com Formation PostgreSQL, la Haute Disponibilité
Alphorm.com Formation PostgreSQL, la Haute DisponibilitéAlphorm.com Formation PostgreSQL, la Haute Disponibilité
Alphorm.com Formation PostgreSQL, la Haute DisponibilitéAlphorm
 
Alphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentaux
Alphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentauxAlphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentaux
Alphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentauxAlphorm
 
Les bases fondamentales du langage transact sql
Les bases fondamentales du langage transact sqlLes bases fondamentales du langage transact sql
Les bases fondamentales du langage transact sqlZineb Meryem
 
Introduction aux Triggers avec MySQL
Introduction aux Triggers avec MySQLIntroduction aux Triggers avec MySQL
Introduction aux Triggers avec MySQLRouff Joseph
 
[JSS2015] - Document db et nosql
[JSS2015] - Document db et nosql[JSS2015] - Document db et nosql
[JSS2015] - Document db et nosqlGUSS
 
Bases de données réparties par la pratique
Bases de données réparties par la pratiqueBases de données réparties par la pratique
Bases de données réparties par la pratiqueAbdelouahed Abdou
 
Petit Déjeuner Talend/SQLI
Petit Déjeuner Talend/SQLIPetit Déjeuner Talend/SQLI
Petit Déjeuner Talend/SQLICedric CARBONE
 
Présentation Talend Open Studio
Présentation Talend Open StudioPrésentation Talend Open Studio
Présentation Talend Open Studiohoracio lassey
 

Destacado (20)

Alphorm.com Formation Certified Network Defender 1/2 : Réussir la certification
Alphorm.com Formation Certified Network Defender 1/2 : Réussir la certificationAlphorm.com Formation Certified Network Defender 1/2 : Réussir la certification
Alphorm.com Formation Certified Network Defender 1/2 : Réussir la certification
 
Alphorm.com Formation Cisco CCNA v3 : mise à jour
Alphorm.com Formation Cisco CCNA v3 : mise à jourAlphorm.com Formation Cisco CCNA v3 : mise à jour
Alphorm.com Formation Cisco CCNA v3 : mise à jour
 
Alphorm.com formation Red Hat (RH134)
Alphorm.com formation Red Hat (RH134)Alphorm.com formation Red Hat (RH134)
Alphorm.com formation Red Hat (RH134)
 
alphorm.com - Formation UML
alphorm.com - Formation UMLalphorm.com - Formation UML
alphorm.com - Formation UML
 
Alphorm.com Formation RDS Windows Server 2008 R2 - Guide du consultant
Alphorm.com Formation  RDS Windows Server 2008 R2 - Guide du consultantAlphorm.com Formation  RDS Windows Server 2008 R2 - Guide du consultant
Alphorm.com Formation RDS Windows Server 2008 R2 - Guide du consultant
 
alphorm.com - Formation PostgreSQL administration
alphorm.com - Formation PostgreSQL administrationalphorm.com - Formation PostgreSQL administration
alphorm.com - Formation PostgreSQL administration
 
Alphorm.com formation-GNS3
Alphorm.com formation-GNS3Alphorm.com formation-GNS3
Alphorm.com formation-GNS3
 
Alphorm.com Support de la Formation Cisco CCNP SWITCH (examen 300-115)
Alphorm.com Support de la Formation Cisco CCNP SWITCH (examen 300-115)Alphorm.com Support de la Formation Cisco CCNP SWITCH (examen 300-115)
Alphorm.com Support de la Formation Cisco CCNP SWITCH (examen 300-115)
 
Alphorm.com Formation MySQL Administration(1Z0-883)
Alphorm.com   Formation MySQL Administration(1Z0-883)Alphorm.com   Formation MySQL Administration(1Z0-883)
Alphorm.com Formation MySQL Administration(1Z0-883)
 
Alphorm.com Formation Microsoft SQL Server 2016 Business Intelligence (SSIS)
Alphorm.com Formation Microsoft SQL Server 2016 Business Intelligence (SSIS)Alphorm.com Formation Microsoft SQL Server 2016 Business Intelligence (SSIS)
Alphorm.com Formation Microsoft SQL Server 2016 Business Intelligence (SSIS)
 
Alphorm.com Formation PostgreSQL, la Haute Disponibilité
Alphorm.com Formation PostgreSQL, la Haute DisponibilitéAlphorm.com Formation PostgreSQL, la Haute Disponibilité
Alphorm.com Formation PostgreSQL, la Haute Disponibilité
 
Alphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentaux
Alphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentauxAlphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentaux
Alphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentaux
 
Les bases fondamentales du langage transact sql
Les bases fondamentales du langage transact sqlLes bases fondamentales du langage transact sql
Les bases fondamentales du langage transact sql
 
Introduction aux Triggers avec MySQL
Introduction aux Triggers avec MySQLIntroduction aux Triggers avec MySQL
Introduction aux Triggers avec MySQL
 
[JSS2015] - Document db et nosql
[JSS2015] - Document db et nosql[JSS2015] - Document db et nosql
[JSS2015] - Document db et nosql
 
Bases de données réparties par la pratique
Bases de données réparties par la pratiqueBases de données réparties par la pratique
Bases de données réparties par la pratique
 
TRIGGERS
TRIGGERSTRIGGERS
TRIGGERS
 
Triggers ppt
Triggers pptTriggers ppt
Triggers ppt
 
Petit Déjeuner Talend/SQLI
Petit Déjeuner Talend/SQLIPetit Déjeuner Talend/SQLI
Petit Déjeuner Talend/SQLI
 
Présentation Talend Open Studio
Présentation Talend Open StudioPrésentation Talend Open Studio
Présentation Talend Open Studio
 

Similar a Alphorm.com Formation PL/SQL

Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôleAlphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôleAlphorm
 
alphorm.com - Formation Exchange Server 2013 (70-341)
alphorm.com - Formation Exchange Server 2013 (70-341)alphorm.com - Formation Exchange Server 2013 (70-341)
alphorm.com - Formation Exchange Server 2013 (70-341)Alphorm
 
Alphorm.com Formation Windows Server 2016 : Installation et Configuration
Alphorm.com Formation Windows Server 2016 : Installation et ConfigurationAlphorm.com Formation Windows Server 2016 : Installation et Configuration
Alphorm.com Formation Windows Server 2016 : Installation et ConfigurationAlphorm
 
alphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin IT
alphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin ITalphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin IT
alphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin ITAlphorm
 
Alphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixte
Alphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixteAlphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixte
Alphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixteAlphorm
 
Linux LPIC-3 ( PDFDrive ).pdf
Linux LPIC-3 ( PDFDrive ).pdfLinux LPIC-3 ( PDFDrive ).pdf
Linux LPIC-3 ( PDFDrive ).pdfThinL389917
 
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux Alphorm
 
Certification oracle base de données oracle 11 g
Certification oracle base de données   oracle 11 gCertification oracle base de données   oracle 11 g
Certification oracle base de données oracle 11 gEGILIA Learning
 
Alphorm.com Formation RDS Windows Server 2012 R2
Alphorm.com Formation RDS Windows Server 2012 R2Alphorm.com Formation RDS Windows Server 2012 R2
Alphorm.com Formation RDS Windows Server 2012 R2Alphorm
 
alphorm.com - Formation Configuration Exchange 2010 (70-662)
alphorm.com - Formation Configuration Exchange 2010 (70-662)alphorm.com - Formation Configuration Exchange 2010 (70-662)
alphorm.com - Formation Configuration Exchange 2010 (70-662)Alphorm
 
Utilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPUtilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPJean-Marc Fontaine
 
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...Alphorm
 
Techdays 2014 - Le fermier azure (2ème partie)
Techdays 2014 - Le fermier azure (2ème partie)Techdays 2014 - Le fermier azure (2ème partie)
Techdays 2014 - Le fermier azure (2ème partie)Jonathan Le Guellec
 
alphorm.com - Formation Powershell 2.0
alphorm.com - Formation Powershell 2.0alphorm.com - Formation Powershell 2.0
alphorm.com - Formation Powershell 2.0Alphorm
 
Powershell
PowershellPowershell
PowershellEROL
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applicationsgoldoraf
 
Embarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobilesEmbarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobilespprem
 
alphorm.com - Formation Windows Server Core 2008 (R2)
alphorm.com - Formation Windows Server Core 2008 (R2)alphorm.com - Formation Windows Server Core 2008 (R2)
alphorm.com - Formation Windows Server Core 2008 (R2)Alphorm
 
Alphorm.com Formation Java,avancé OCP (1Z0-804)
Alphorm.com Formation Java,avancé OCP (1Z0-804)Alphorm.com Formation Java,avancé OCP (1Z0-804)
Alphorm.com Formation Java,avancé OCP (1Z0-804)Alphorm
 

Similar a Alphorm.com Formation PL/SQL (20)

Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôleAlphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
 
alphorm.com - Formation Exchange Server 2013 (70-341)
alphorm.com - Formation Exchange Server 2013 (70-341)alphorm.com - Formation Exchange Server 2013 (70-341)
alphorm.com - Formation Exchange Server 2013 (70-341)
 
Intro.ppt
Intro.pptIntro.ppt
Intro.ppt
 
Alphorm.com Formation Windows Server 2016 : Installation et Configuration
Alphorm.com Formation Windows Server 2016 : Installation et ConfigurationAlphorm.com Formation Windows Server 2016 : Installation et Configuration
Alphorm.com Formation Windows Server 2016 : Installation et Configuration
 
alphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin IT
alphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin ITalphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin IT
alphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin IT
 
Alphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixte
Alphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixteAlphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixte
Alphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixte
 
Linux LPIC-3 ( PDFDrive ).pdf
Linux LPIC-3 ( PDFDrive ).pdfLinux LPIC-3 ( PDFDrive ).pdf
Linux LPIC-3 ( PDFDrive ).pdf
 
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
 
Certification oracle base de données oracle 11 g
Certification oracle base de données   oracle 11 gCertification oracle base de données   oracle 11 g
Certification oracle base de données oracle 11 g
 
Alphorm.com Formation RDS Windows Server 2012 R2
Alphorm.com Formation RDS Windows Server 2012 R2Alphorm.com Formation RDS Windows Server 2012 R2
Alphorm.com Formation RDS Windows Server 2012 R2
 
alphorm.com - Formation Configuration Exchange 2010 (70-662)
alphorm.com - Formation Configuration Exchange 2010 (70-662)alphorm.com - Formation Configuration Exchange 2010 (70-662)
alphorm.com - Formation Configuration Exchange 2010 (70-662)
 
Utilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPUtilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHP
 
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
 
Techdays 2014 - Le fermier azure (2ème partie)
Techdays 2014 - Le fermier azure (2ème partie)Techdays 2014 - Le fermier azure (2ème partie)
Techdays 2014 - Le fermier azure (2ème partie)
 
alphorm.com - Formation Powershell 2.0
alphorm.com - Formation Powershell 2.0alphorm.com - Formation Powershell 2.0
alphorm.com - Formation Powershell 2.0
 
Powershell
PowershellPowershell
Powershell
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applications
 
Embarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobilesEmbarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobiles
 
alphorm.com - Formation Windows Server Core 2008 (R2)
alphorm.com - Formation Windows Server Core 2008 (R2)alphorm.com - Formation Windows Server Core 2008 (R2)
alphorm.com - Formation Windows Server Core 2008 (R2)
 
Alphorm.com Formation Java,avancé OCP (1Z0-804)
Alphorm.com Formation Java,avancé OCP (1Z0-804)Alphorm.com Formation Java,avancé OCP (1Z0-804)
Alphorm.com Formation Java,avancé OCP (1Z0-804)
 

Más de Alphorm

Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm
 
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm
 
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm
 
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm
 
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm
 
Alphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm
 
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm
 
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm
 
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm
 
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm
 
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm
 
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm
 
Alphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm
 
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm
 
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm
 
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm
 
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm
 
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm
 
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm
 
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm
 

Más de Alphorm (20)

Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
 
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
 
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
 
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
 
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
 
Alphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion Commerciale
 
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
 
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
 
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
 
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
 
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
 
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
 
Alphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POO
 
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
 
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
 
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
 
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
 
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
 
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
 
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
 

Alphorm.com Formation PL/SQL

  • 1. Le langage PL/SQL Présentation de la formation Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Le langage PL/SQL Noureddine DRISSI Expert consultant bases de données
  • 2. Plan Le formateur Mes formations sur Alphorm Les objectifs de la formation Le plan de formation Publics concernés Le langage PL/SQL alphorm.com™© Publics concernés Connaissances requises Liens utiles
  • 3. Le formateur Noureddine DRISSI Expertise dans le domaine des bases de données 15 années d’expérience sur tous les SGBDR du marché (SQL Server, Oracle, Postgresql, Mysql, DB2, MongoDB, SQL, PL/SQL, Transact-SQL) Issue de l’environnement bancaire Le langage PL/SQL alphorm.com™© contact@ordb.fr
  • 4. Mes formations sur alphorm.com MySQL, Administration (1Z0-883) Oracle Database 11g DBA 1 (1Z0-052) Formation PostgreSQL, La haute disponibilité Le langage PL/SQL alphorm.com™© (1Z0-883) MongoDB, administration (1Z0-052) Formation Administration PostgreSQL Administration SQL Server 2012 (70-462) Le langage SQL La haute disponibilité
  • 5. Objectifs Maîtriser le langage PL/SQL Utiliser des traitements stockés et des triggers dans les applications Le langage PL/SQL alphorm.com™©
  • 6. Plan de cours Module 1: Présentation du PL/SQL Module 2: Les variables Module 3: Accès à la base de données et ordres SQL Module 4: Les structures de contrôle Module 5: Les curseurs Le langage PL/SQL alphorm.com™© Module 5: Les curseurs Module 6: Gestion des erreurs Module 7: Les programmes stockés Module 8: Les triggers Module 9: Les packages
  • 7. Publics concernés Concepteurs Développeurs Toutes les personnes impliquées dans des développements utilisant la base de données Oracle. Le langage PL/SQL alphorm.com™©
  • 8. Connaissances requises Connaissance du language SQL Notions de programmation Ressource : Formation Le langage SQL sur Alphorm • http://www.alphorm.com/formation/formation-langage-sql Le langage PL/SQL alphorm.com™© • http://www.alphorm.com/formation/formation-langage-sql
  • 9. Liens utiles Documentation PL/SQL http://docs.oracle.com/cd/B10501_01/appdev.920/a96624/toc.htm http://oracle.developpez.com/cours/#SQL-et-PL-SQL Téléchargement Oracle 11g Express Edition http://www.oracle.com/technetwork/database/database-technologies/express- Le langage PL/SQL alphorm.com™© http://www.oracle.com/technetwork/database/database-technologies/express- edition/downloads/index.html Téléchargement Oracle SQL Developer http://www.oracle.com/technetwork/developer-tools/sql- developer/downloads/index.html
  • 10. Présentation de l’environnement Le langage PL/SQL alphorm.com™©
  • 11. L’environnement Présentation de la formation Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum L’environnement Noureddine DRISSI Expert consultant bases de données
  • 12. Objectifs Configurer l’environnement de travail Vérifier les pré-requis Installer le SGBDR Oracle Database 11g Express Edition Installer Oracle SQL Developer Se connecter au moteur de base de données Oracle Le langage PL/SQL alphorm.com™© Se connecter au moteur de base de données Oracle Créer le shéma facsys (facsysv2.sql)
  • 13. Les pré-requis Matériel Mémoire • Minimum : - Éditions Express : 512 MO Processeur • Minimum : Le langage PL/SQL alphorm.com™© • Minimum : - Processeur x86 : 1,0 GHz, Processeur x64 : 1,4 GHz - Recommandé : 2,0 GHz ou plus Disque • Minimum : - 5,0 GO disponible
  • 14. Les pré-requis Logiciels OS • Windows 8 SGBDR et outil • Oracle Database 11g Express Edition Le langage PL/SQL alphorm.com™© • Oracle Database 11g Express Edition http://www.oracle.com/technetwork/database/database-technologies/express- edition/downloads/index.html • Oracle SQL Developer http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html
  • 15. Le modèle de données (facsys) Le langage PL/SQL alphorm.com™©
  • 16. Atelier Installation du SGBDR Oracle Database 11g Express Edition Installation de Oracle SQL Developper Connexion à la base de données Création du schéma facsys et test de connexion Le langage PL/SQL alphorm.com™©
  • 17. Présentation du langage PL/SQL Le langage PL/SQL alphorm.com™©
  • 18. Les outils de Présentation du langage PL/SQL Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Les outils de développement Noureddine DRISSI Expert consultant bases de données
  • 19. Objectifs Utiliser Oracle SQL Developer pour développer en PL/SQL Exécuter un programme PL/SQL à partir de sqlplus Le langage PL/SQL alphorm.com™©
  • 20. Oracle SQL Developer Caractéristiques Auto-formatage des instructions PL/SQL et SQL Inclut un débogueur PL/SQL Permet de naviger dans les objets de bases de données Contient des modèles de code Le langage PL/SQL alphorm.com™© Contient des modèles de code Permet l’exécution de scripts
  • 21. Le langage PL/SQL Le langage PL/SQL alphorm.com™©
  • 22. Le langage PL/SQL Présentation du langage PL/SQL Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Le langage PL/SQL Noureddine DRISSI Expert consultant bases de données
  • 23. Objectifs Connaître la syntaxe du langage PL/SQL Ecrire et exécuter un bloc PL/SQL Exercices pratiques Le langage PL/SQL alphorm.com™©
  • 24. Le langage PL/SQL PL/SQL = Procedural Language extensions to SQL Langage procédural Les variables Les structures de contrôle et les boucles Les procédures, les fonctions, les triggers et les packages Le langage PL/SQL alphorm.com™© Les procédures, les fonctions, les triggers et les packages Langage structuré en blocs (ensemble d’instructions) Externe (anonyme) ou stocké en base (procédure, fonctions ou triggers) S’intègre dans les outils SQL*FORMS, SQL*PLUS, PRO*C, etc.
  • 25. Client ORACLE Moteur PL/SQL Architecture PL/SQL BLOC PL/SQL BLOC PL/SQL Instructions procédurales Procédurale Le langage PL/SQL alphorm.com™© Moteur SQL SQLInstructions SQL
  • 26. Structure d’un programme PL/SQL Se décompose en trois parties [DECLARE] .......... .......... BEGIN .......... La zone DECLARE sert à la déclaration des variables, des constantes, ou des curseurs La zone BEGIN constitue le corps du programme La zone EXCEPTION permet de préciser les actions Le langage PL/SQL alphorm.com™© .......... .......... [EXCEPTION] .......... .......... END ; / La zone EXCEPTION permet de préciser les actions à entreprendre lorsque des erreurs sont rencontrées (pas de référence article trouvée pour une insertion, ...). Le END répond au BEGIN précédent, il marque la fin du script. Le / permet de terminer le bloc PL/SQL
  • 27. DBMS_OUTPUT Permet d’afficher une chaîne ou le contenu d’une variable SET SERVEROUTPUT ON; BEGIN DBMS_OUTPUT.PUTLINE(<valeur>); END ; / Le langage PL/SQL alphorm.com™© /
  • 28. Bloc PL/SQL: exercice 1 (sol_exercice1.txt) Créez un bloc PL/SQL qui affiche le texte suivant Créer un programme PL/SQL qui insère une nouvelle catégories (table CATEGORIES) de produit avec les valeurs suivantes: CODE_CAT = 5 et LIBELLE_CAT = "Composants" Bonjour facys: vous êtes sur la plateforme Alphorm le <date_du_jour> Le langage PL/SQL alphorm.com™©
  • 29. Un peu plus loin dans l’utilisation de PL/SQL Le langage PL/SQL alphorm.com™© PL/SQL
  • 30. Un peu plus loin dans Présentation du langage PL/SQL Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Un peu plus loin dans l’utilisation du PL/SQL Noureddine DRISSI Expert consultant bases de données
  • 31. Objectifs Connaîtres les principales caractéristiques du PL/SQL Connaître les directives de compilation d’un bloc PL/SQL Connaître la notion de bloc imbriquée Le langage PL/SQL alphorm.com™©
  • 32. Rappel: structure d’un bloc PL/SQL [DECLARE] .......... .......... BEGIN .......... .......... [EXCEPTION] Le langage PL/SQL alphorm.com™© [EXCEPTION] .......... .......... END ; /
  • 33. Limites et fonctionnement Contenu d’un bloc PL/SQL LMD (langage de manipulation de données) LDD (langage de définition des données) est interdit Gestion des transactions Identique à SQL Le langage PL/SQL alphorm.com™© Identique à SQL
  • 34. Directive PRAGMA Le mot clé PRAGMA Instruction de compilation (non exécutable) Les valeurs possibles EXCEPTION_INIT RESTRICT_REFERENCES Le langage PL/SQL alphorm.com™© RESTRICT_REFERENCES SERIALLY_REUSABLE AUTONOMOUS_TRANSACTION
  • 35. Les blocs imbriqués [DECLARE] .......... BEGIN .......... [DECLARE] .......... BEGIN .......... Le langage PL/SQL alphorm.com™© [EXCEPTION] .......... .......... END ; / .......... [EXCEPTION] .......... END ; /
  • 36. Affichage à l’écran [DECLARE] .......... BEGIN dbms_output.put_line ... [EXCEPTION] Le langage PL/SQL alphorm.com™© [EXCEPTION] .......... .......... END ; /
  • 37. Les variables Le langage PL/SQL alphorm.com™©
  • 38. Introduction aux variables Les variables Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Introduction aux variables PL/SQL Noureddine DRISSI Expert consultant bases de données
  • 39. Objectifs Connaître les types de données des variables Déclarer et manipuler des variables en PL/SQL Le langage PL/SQL alphorm.com™©
  • 40. Déclaration des variables DECLARE .......... .......... BEGIN .......... .......... [EXCEPTION] ICI Nommage d’une variable Longueur <= 30 caractères Composé des lettres A-Z, chiffres de 1-9, « $ », « _ » ou « # » Le langage PL/SQL alphorm.com™© [EXCEPTION] .......... .......... END ; / Doit commencer par une lettre Ne doit pas être un mot réservé
  • 41. Les types de données PL/SQL Types scalaires BINARY_INTEGER INTEGER NUMBER POSITIVE/NATURAL CHAR LONG VARCHAR ou VARCHAR2 BOOLEAN RAW LONG RAW CLOB BLOB Types composés RECORD TABLE Types numériques Types caractères Types RAW Le langage PL/SQL alphorm.com™© DECIMAL FLOAT INTEGER REAL SMALLLINT BOOLEAN DATE ROWID CLOB UROWID BFILE Types dates Types ROWID Types booléens Types LOB
  • 42. Conversion de types de données Les types de conversion EXPLICITE • Utilisent des fonctions comme TO_DATE, TO_CHAR, etc. IMPLICITE • Réalisées automatiquement par le moteur PL/SQL Le langage PL/SQL alphorm.com™© • Réalisées automatiquement par le moteur PL/SQL - Evaluation d’expressions - Affectation des variables
  • 43. Conversion de types de données Evaluation d’expressions NUMBER DATE ROWID Le langage PL/SQL alphorm.com™© BINARY_INTEGER CHAR VARCHAR2 RAW
  • 44. Conversion de types de données Affectation de variables NUMBER DATE ROWID Le langage PL/SQL alphorm.com™© BINARY_INTEGER CHAR VARCHAR2 RAW
  • 45. Déclaration de variables Syntaxe <nom_variable> [CONSTANT] TYPE [NOT NULL] [{DEFAULT] | :=} VALEUR]; Le langage PL/SQL alphorm.com™©
  • 46. Les variables de liaison Le langage PL/SQL alphorm.com™©
  • 47. Les variables de liaison Les variables Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Les variables de liaison Noureddine DRISSI Expert consultant bases de données
  • 48. Objectif Savoir utiliser les variables de liaison Le langage PL/SQL alphorm.com™©
  • 49. Qu’est-ce qu’une variable de liaison ? Permet de socker les entrées utilisateurs De visualiser le contenu d’une variable à travers plusieurs exécution successives de bloc PL/SQL DECLARE .......... BEGIN variable ... Le langage PL/SQL alphorm.com™© BEGIN :variable ... .......... [EXCEPTION] .......... .......... END ; /
  • 50. La portée des variables Le langage PL/SQL alphorm.com™©
  • 51. La portée des variables Les variables Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum La portée des variables Noureddine DRISSI Expert consultant bases de données
  • 52. Objectif Connaître la portée des variables dans un programme PL/SQL Le langage PL/SQL alphorm.com™©
  • 53. La portée des variables PL/SQL Une variable est accessible dans le bloc dans lequel elle a été déclarée et dans les blocs secondaires (imbriqués) • Si le nom d’une variables déclarée dans le bloc principal est réutilisé dans un bloc secondaire, c’est une nouvelle variable qui est créée Le langage PL/SQL alphorm.com™©
  • 54. Les autres types de données PL/SQL Le langage PL/SQL alphorm.com™©
  • 55. Les autres types de données PL/SQL Les variables Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Les autres types de données PL/SQL Noureddine DRISSI Expert consultant bases de données
  • 56. Objectifs Connaître les autres types de données PL/SQL Types définis par les utilisateurs Types composés • Les enregistrements ou structure • Les tableaux Le langage PL/SQL alphorm.com™© • Les tableaux Les variables basées Créer et utiliser les autres types de données
  • 57. Les types définis par les utilisateurs Deux types dérivés possibles: Les types bornés Les types non bornés (alias ou synonym d’un type de base) Syntaxe Le langage PL/SQL alphorm.com™© Syntaxe SUBTYPE <nom_type> IS TYPE [ (CONSTRAINT) ] [NOT NULL]
  • 58. Les structures Une structure c’est quoi ? Type composé Permet de stocker des données structurées = enregistrement Syntaxe de déclaration Le langage PL/SQL alphorm.com™© Syntaxe de déclaration TYPE <nom_type_structure> IS RECORD (<nom_champ1> TYPE [NOT NULL] [:=EXPRESSION1], [, . . . ] ); Syntaxe d’utilisation <nom_enregistrement> <nom_type_structure>
  • 59. Les tableaux (type composé TABLE) Les tableaux associatifs Syntaxe de déclaration TYPE <nom_type_tableau> IS TABLE OF <type_valeur> [NOT NULL] INDEX BY { PLS_INTEGER | BINARY_INTEGER | VARCHAR2(TAILLE) }; Syntaxe d’utilisation Le langage PL/SQL alphorm.com™© Syntaxe d’utilisation <nom_variable> <nom_type_tableau>
  • 60. Les tableaux (type composé TABLE) Les tableaux pré-dimensionnés Syntaxe de déclaration TYPE <nom_type_tableau> IS VARRAY(TAILLE) OF <type_valeur> [NOT NULL]; Syntaxe d’utilisation Le langage PL/SQL alphorm.com™© Syntaxe d’utilisation <nom_variable> <nom_type_tableau>
  • 61. Les tableaux (type composé TABLE) Les actions possibles sur un tableau en PL/SQL EXISTS(n) COUNT FIRST et LAST PRIOR et NEXT (n) Le langage PL/SQL alphorm.com™© PRIOR et NEXT (n) TRIM (n) DELETE (n)
  • 62. Les variables basées Attribut %TYPE Permet de référencer: une colonne d’une table ou une variable déjà définie Syntaxe de déclaration <nom_variable> {<nom_table.colonne | <nom_variable>}%TYPE; Le langage PL/SQL alphorm.com™© Attribut %ROWTYPE Permet à la variable d’hériter des caractéristiques d’une ligne de table Syntaxe de déclaration <nom_variable> {<nom_table> | <nom_variable>}%ROWTYPE;
  • 63. Récapitulatif sur les variables PL/SQL et exercices Le langage PL/SQL alphorm.com™© et exercices
  • 64. Le SELECT dans un bloc PL/SQL Les variables Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Le SELECT dans un bloc PL/SQL Noureddine DRISSI Expert consultant bases de données
  • 65. Objectif Interroger une bases de données Oracle avec le PL/SQL Le langage PL/SQL alphorm.com™©
  • 66. Le SELECT INTO Syntaxe SELECT EXPRESSION1 [ , . . . ] INTO VARIABLE1 [ , . . . ] FROM TABLE <nom_table> [ WHERE PREDICAT ] ; Le langage PL/SQL alphorm.com™©
  • 67. BULK COLLECT Syntaxe SELECT EXPRESSION1 [ , . . . ] BULK COLLECT INTO TABLEAU1 [ , . . . ] FROM TABLE <nom_table> [ WHERE PREDICAT ] ; Le langage PL/SQL alphorm.com™©
  • 68. Les ordres INSERT, UPDATE et DELETE Le langage PL/SQL alphorm.com™© DELETE
  • 69. Les ordres INSERT, UPDATE et DELETE Accès à la base de données et ordres SQL Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Les ordres INSERT, UPDATE et DELETE Noureddine DRISSI Expert consultant bases de données
  • 70. Objectif Mettre à jour les données d’une base avec PL/SQL Le langage PL/SQL alphorm.com™©
  • 71. La commande INSERT Syntaxe INSERT INTO <nom_table> VALUES <variable_enregistrement> ; Le langage PL/SQL alphorm.com™©
  • 72. La commande UPDATE Syntaxe UPDATE <nom_table> SET <nom_champ> = <variable_enregistrement> [ WHERE PREDICAT ]; Le langage PL/SQL alphorm.com™©
  • 73. La commande DELETE Syntaxe DELETE <nom_table> [ WHERE PREDICAT ]; Le langage PL/SQL alphorm.com™©
  • 74. Attributs des ordres LMD Le langage PL/SQL alphorm.com™©
  • 75. Attributs des ordres Accès à la base de données et ordres SQL Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Attributs des ordres INSERT, UPDATE et DELETE Noureddine DRISSI Expert consultant bases de données
  • 76. Objectif Obtenir des informations sur l’exécution des ordres LMD Le langage PL/SQL alphorm.com™©
  • 77. Les différents attributs SQL%FOUND Type BOOLEAN • Renvoie TRUE si la précédente exécution (INSERT, UPDATE ou DELETE) a modifiéé des enregistrements SQL%NOTFOUND Le langage PL/SQL alphorm.com™© SQL%NOTFOUND Type BOOLEAN • Renvoie TRUE si la précédente exécution (INSERT, UPDATE ou DELETE) n’a modifiéé aucun enregistrement SQL%ROWCOUNT Renvoie le nombre de ligne modifiés par la précédente exécution
  • 78. Clause SQL RETURNING Fonction Permet de renvoyer les valeurs de champs des enregistrements affectés par les ordres INSERT, UPDATE ou DELETE Limites Inutilisable avec un ordre INSERT qui insère plusieurs enregistrement à partir Le langage PL/SQL alphorm.com™© Inutilisable avec un ordre INSERT qui insère plusieurs enregistrement à partir d’une sous-requête Impossible d’utiliser « * » pour retourner l’ensemble des champs insérées dans l’enregistrement
  • 79. Récapitulatif sur le LMD avec le langage PL/SQL et exercices Le langage PL/SQL alphorm.com™© langage PL/SQL et exercices
  • 80. Récapitulatif sur le LMD Accès à la base de données et ordres SQL Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Récapitulatif sur le LMD avec le langage PL/SQL et exercices Noureddine DRISSI Expert consultant bases de données
  • 81. Objectifs Rappel sur le LMD avec le PL/SQL Exercices pratiques Le langage PL/SQL alphorm.com™©
  • 82. Ce que nous avons étudiés SELECT INTO BULK COLLECT INTO Insert, update et delete dans un programme PL/SQL Les attributs SQL%FOUND, SQL%NOTFOUND et SQL%ROWCOUNT Le langage PL/SQL alphorm.com™© La clause RETURNING
  • 83. Le LMD dans PL/SQL: exercice 4 (sol_exercice4.txt) Créez le bloc PL/SQL qui permet d’effectuer les opérations suivantes: Affichez le nom, la fonction, le salaire et la commission du salarié dont la fonction est « Directeur » Affichez le nom, la fonction, le salaire et la comission de tous les salariés Mettez à jour la commission du salarié « Orlando » ( comission = 5000) et affichez la nouvelle valeur inserée Le langage PL/SQL alphorm.com™© Mettez à jour la commission du salarié « Orlando » ( comission = 5000) et affichez la nouvelle valeur inserée Inserez une nouvele categorie (code_cat=77 et libelle_cat= ‘Outillage’ ) puis affichez les valeurs inserées pour la colonne code_cat et libelle_cat
  • 84. Instructions de contrôle Le langage PL/SQL alphorm.com™©
  • 85. Traitements conditionnels Les structures de contrôles Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Traitements conditionnels Noureddine DRISSI Expert consultant bases de données
  • 86. Objectifs Décrire les instructions de contrôle Apprendre à utiliser les traitements conditionnels Le langage PL/SQL alphorm.com™©
  • 87. IF THEN ELSIF ELSE Syntaxe IF <condition_plsql> THEN <sequence_de_commandes> [ ELSEIF <condition_plsql> THEN <sequence_de_commandes> [ ELSEIF <condition_plsql> THEN <sequence_de_commandes> [ ELSE <sequence_de_commandes> ] Le langage PL/SQL alphorm.com™© [ ELSE <sequence_de_commandes> ] END IF;
  • 88. Instruction CASE Case simple Syntaxe CASE <expression> WHEN <valeur> THEN <sequence_de_commandes> [ ELSE <sequence_de_commandes> ] Le langage PL/SQL alphorm.com™© [ ELSE <sequence_de_commandes> ] END CASE;
  • 89. Instruction CASE Case avec recherche Syntaxe CASE WHEN <condition_plsql> THEN <sequence_de_commandes> [ ELSE <sequence_de_commandes> ] Le langage PL/SQL alphorm.com™© [ ELSE <sequence_de_commandes> ] END CASE;
  • 90. Traitements itératifs Le langage PL/SQL alphorm.com™©
  • 91. Traitements itératifs Les structures de contrôles Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Traitements itératifs Noureddine DRISSI Expert consultant bases de données
  • 92. Objectifs Décrire les instructions de contrôle Apprendre à utiliser les traitements itératifs Le langage PL/SQL alphorm.com™©
  • 93. L’instruction LOOP Permet de répéter une séquence de commandes Syntaxe [ <<nom_boucle>> ] LOOP <commandes_plsql>; Le langage PL/SQL alphorm.com™© <commandes_plsql>; EXIT [ <nom_boucle> ] | EXIT WHEN <condition>; END LOOP;
  • 94. L’instruction WHILE Permet de répéter une séquence de commandes tant que la condition reste vraie Syntaxe [ <<nom_boucle>> ] WHILE <condition> LOOP Le langage PL/SQL alphorm.com™© WHILE <condition> LOOP <commandes_plsql>; END LOOP [ <nom_boucle> ];
  • 95. L’instruction FOR Permet de répéter une séquence de commandes une fois pour chaque élément dans l’intervalle délimité par deux expressions Syntaxe [ <<nom_boucle>> ] FOR <indice> IN [ REVERSE ] <borne_inférieure> . . <borne_supérieure>LOOP Le langage PL/SQL alphorm.com™© FOR <indice> IN [ REVERSE ] <borne_inférieure> . . <borne_supérieure>LOOP <commandes_plsql>; END LOOP [ <nom_boucle> ];
  • 96. Récapitulatif sur les instructions de contrôle et exercices Le langage PL/SQL alphorm.com™© contrôle et exercices
  • 97. Récapitulatif sur les Les structures de contrôles Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Récapitulatif sur les instructions de contrôle et exercices Noureddine DRISSI Expert consultant bases de données
  • 98. Objectifs Rappel sur les instructions de contrôle Exercices Le langage PL/SQL alphorm.com™©
  • 99. Ce que nous avons étudiés IF THEN ELSIF ELSE L’instruction CASE La boucle LOOP La boucle WHILE Le langage PL/SQL alphorm.com™© La boucle FOR
  • 100. Instructions de contrôle: exercice 5 (sol_exercice5.txt) Créez le bloc PL/SQL qui permet d’effectuer les opérations suivantes: Simuler une augmentation de salaire des salariés de 10% si leur salaire est inférieur à la moyenne des salaires Affichez la liste de tous les articles en utilisant la boucle WHILE et la boucle FOR Le langage PL/SQL alphorm.com™©
  • 101. Les curseurs Le langage PL/SQL alphorm.com™©
  • 102. Introduction au curseur Les curseurs Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Introduction au curseur Noureddine DRISSI Expert consultant bases de données
  • 103. Objectifs Connaître le rôle d’un curseur Connaître les types de curseurs Savoir comment fonctionne un curseur Le langage PL/SQL alphorm.com™©
  • 104. Un curseur c’est quoi ? Permet de manipuler les données ligne par ligne Permet de contrôler le traitement PL/SQL Le langage PL/SQL alphorm.com™©
  • 105. Un curseur c’est quoi ? Permet de manipuler les données ligne par ligne Fonctionnement Créer une zone de contexte pour exécuter la commande et stocker les informations Le curseur permet de nommer cette zone de contexte, d’accéder aux Le langage PL/SQL alphorm.com™© Le curseur permet de nommer cette zone de contexte, d’accéder aux informations et éventuellement de contrôler le traitement PL/SQL
  • 106. Les types de curseurs Curseurs explicites Pour traiter les requêtes multilignes Curseurs implicites Utilisés pour les autres commandes SQL (lorsqu’une requête ne ramène qu’une ligne) Le langage PL/SQL alphorm.com™© qu’une ligne)
  • 107. Utilisation d’un curseur Les étapes de la vie d’un curseur DECLARATION (DECLARE) OUVERTURE (OPEN) DEFILEMENT DES DONNEES (FETCH) FERMETURE (CLOSE) Le langage PL/SQL alphorm.com™© FERMETURE (CLOSE)
  • 108. Déclaration, ouverture, traitement des lignes et fermeture d’un curseur Le langage PL/SQL alphorm.com™© des lignes et fermeture d’un curseur
  • 109. Déclaration, ouverture, Les curseurs Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Déclaration, ouverture, traitement des lignes et fermeture d’un curseur Noureddine DRISSI Expert consultant bases de données
  • 110. Objectifs Savoir déclarer des curseurs Savoir gérer les curseurs et utiliser les curseurs Le langage PL/SQL alphorm.com™©
  • 111. Déclaration Consite à nommer un curseur et à lui associer une requête Syntaxe CURSOR <nom_curseur> [ ( <nom_parametre> TYPE [ , . . . ] IS <requête_SQL>; Le langage PL/SQL alphorm.com™©
  • 112. Ouverture Dès que le curseur est ouvert l’ordre SQL est exécuté Syntaxe OPEN <nom_curseur> [ ( <parametre_entrée [ , . . . ] ) ]; Le langage PL/SQL alphorm.com™©
  • 113. Traitement des lignes Pour trouver la ligne suivante dans l’ensemble actif de données, on doit défiler le curseur par la commande FETCH Syntaxe FETCH <nom_curseur> { INTO { <nom_variable> | <nom_enregistrement> [ , . . . ] } | BULK COLLECT INTO <variable_enregistrement> }; Le langage PL/SQL alphorm.com™©
  • 114. Déclaration, ouverture, traitement des lignes et fermeture d’un curseur Le langage PL/SQL alphorm.com™© des lignes et fermeture d’un curseur
  • 115. Ouverture et fermeture Les curseurs Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Ouverture et fermeture d’un curseur Noureddine DRISSI Expert consultant bases de données
  • 116. Objectifs Savoir déclarer des curseurs Savoir ouvrir et fermer un curseur Le langage PL/SQL alphorm.com™©
  • 117. Ouverture Dès que le curseur est ouvert l’ordre SQL est exécuté Syntaxe OPEN <nom_curseur> [ ( <parametre_entrée> [ , . . . ] ) ]; Le langage PL/SQL alphorm.com™©
  • 118. Fermeture Chaque curseur explicite ouvert doit être fermé Syntaxe CLOSE <nom_curseur> ; Le langage PL/SQL alphorm.com™©
  • 119. Traitement des lignes d’un curseur Le langage PL/SQL alphorm.com™©
  • 120. Traitement des lignes d’un Les curseurs Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Traitement des lignes d’un curseur Noureddine DRISSI Expert consultant bases de données
  • 121. Objectif Savoir traiter les lignes d’un curseur Le langage PL/SQL alphorm.com™©
  • 122. Traitement des lignes Pour trouver la ligne suivante dans l’ensemble actif de données, on doit défiler le curseur par la commande FETCH Syntaxe FETCH <nom_curseur> { INTO { <nom_variable> | <nom_enregistrement> [ , . . . ] } | BULK COLLECT INTO <variable_enregistrement> }; Le langage PL/SQL alphorm.com™©
  • 123. Etat d’un curseur Le langage PL/SQL alphorm.com™©
  • 124. Etat d’un curseur Les curseurs Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Etat d’un curseur Noureddine DRISSI Expert consultant bases de données
  • 125. Objectif Connaître les différents attributs de statut d’un curseur Le langage PL/SQL alphorm.com™©
  • 126. Etat d’un curseur Les attributs des curseurs explicites: %FOUND %NOTFOUND %ISOPEN %ROWCOUNT Le langage PL/SQL alphorm.com™© %ROWCOUNT
  • 127. Mise à jour des lignes d’un curseur Le langage PL/SQL alphorm.com™©
  • 128. Mise à jour des lignes d’un Les curseurs Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Mise à jour des lignes d’un curseur Noureddine DRISSI Expert consultant bases de données
  • 129. Objectif Savoir mettre à jour les lignes d’un curseur Le langage PL/SQL alphorm.com™©
  • 130. Curseurs FOR UPDATE Option FOR UPDATE Permet de verrouiller les enregistrements d’un curseur pour modification Syntaxe CURSOR <nom_curseur> [ ( <nom_parametre> TYPE := <valeur_par_default> [ , . . . ] ) ] IS <requête_SQL> FOR UPDATE [ OF <nom_colonne> [ , . . . ] ] [ { Le langage PL/SQL alphorm.com™© , . . . ] ) ] IS <requête_SQL> FOR UPDATE [ OF <nom_colonne> [ , . . . ] ] [ { NOWAIT | WAIT <nombre_de_secondes> } ];
  • 131. Utilisation des curseurs avec une boucle Le langage PL/SQL alphorm.com™© boucle
  • 132. Utilisation des curseurs Les curseurs Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Utilisation des curseurs avec une boucle Noureddine DRISSI Expert consultant bases de données
  • 133. Objectif Utiliser un curseur avec une boucle Le langage PL/SQL alphorm.com™©
  • 134. Utilisation d’un curseur avec une boucle Syntaxe FOR <nom_enregistrement> IN <nom_curseur> LOOP <commandes_plsql>; END LOOP; Le langage PL/SQL alphorm.com™©
  • 135. Les exceptions Le langage PL/SQL alphorm.com™©
  • 136. Récapitulatif sur les Les curseurs Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Récapitulatif sur les curseurs et exercices Noureddine DRISSI Expert consultant bases de données
  • 137. Objectifs Rappel sur les curseurs Exercices Le langage PL/SQL alphorm.com™©
  • 138. Ce que nous avons étudiés DECLARATION (CURSOR) des curseurs OUVERTURE (OPEN) et FERMETURE (CLOSE) des CURSEURS TRAITEMENT DES LIGNES (FETCH) des curseurs Les attributs de statut des curseurs (%FOUND, %NOTFOUND, %ISOPEN et %ROWCOUNT) Le langage PL/SQL alphorm.com™© et %ROWCOUNT) La mise à jour des lignes d’un curseur (FOR UPDATE) Les curseurs et la variante de la boucle FOR
  • 139. Les curseurs: exercice 6 (sol_exercice6.txt) Créez un bloc PL/SQL qui permet d’afficher toutes les commandes de la table « commandes » à l’aide d’un curseur utilisant la boucle FOR. Créez un bloc PL/SQL qui permet d’afficher le nombre de commandes par client. Le pays de résidence du client sera passé en paramètre (argument) au curseur avec une valeur par défaut. Utilisez la boucle FOR avec votre curseur. Le langage PL/SQL alphorm.com™© avec votre curseur. Créez un bloc PL/SQL qui permet de mettre à jour (à l’aide d’un curseur) la date d’envoi des commandes à la date du jour et l’état de la commande à « TRAITEE » pour les commandes dont la date d’envoi est nul.
  • 140. Les exceptions Le langage PL/SQL alphorm.com™©
  • 141. Les types d’exceptions Les exceptions Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Les types d’exceptions Noureddine DRISSI Expert consultant bases de données
  • 142. Objectif Connaître les types d’exceptions Le langage PL/SQL alphorm.com™©
  • 143. Les quatre types d’exception Les exceptions systèmes nommées Un nom est attribué aux exceptions par Oracle Déclenchées à la suite d’une erreur PL/SQL ou Oracle Les exceptions utilisateurs nommées Nommées lors de leur déclaration par le développeur Le langage PL/SQL alphorm.com™© Nommées lors de leur déclaration par le développeur Déclenchées à la suite d’erreurs dans le code applicatif Les exceptions système anonymes Non nommées Déclenchées à la suite d’une erreur PL/SQL mais non nommées
  • 144. Les quatre types d’exception Les exceptions utilisateur anonymes Définies et déclenchées par le développeur Code compris entre - 20 000 et – 20 999 Le langage PL/SQL alphorm.com™©
  • 145. Création d’une exception dans un bloc PL/SQL Le langage PL/SQL alphorm.com™© bloc PL/SQL
  • 146. Création d’une exception Les exceptions Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Création d’une exception dans un bloc PL/SQL Noureddine DRISSI Expert consultant bases de données
  • 147. Objectif Gérer une exception dans un bloc PL/SQL Le langage PL/SQL alphorm.com™©
  • 148. Création d’une exception Syntaxe DECLARE . . . BEGIN . . . EXCEPTION Le langage PL/SQL alphorm.com™© WHEN <nom_exception> [ OR <nom_exception> . . . ] THEN <instructions_plsql>; . . . [ WHEN OTHERS THEN <instructions_plsql> ; ] END;
  • 149. Les exceptions prédéfinies Se trouve dans le package STANDARD de PL/SQL Quelques exceptions prédéfinies • NO_DATA_FOUND (ORA-01403 SQLCODE= +100) • CURSOR_ALREADY_OPEN (ORA-6511 SQLCODE= -6511) • ZERO_DIVIDE (ORA-01476 SQLCODE = -1476) Le langage PL/SQL alphorm.com™© • ZERO_DIVIDE (ORA-01476 SQLCODE = -1476) • CASE _NOT_FOUND (ORA-6592 SQLCODE = -6592) • . . .
  • 150. Les exceptions anonymes Le langage PL/SQL alphorm.com™©
  • 151. Les exceptions anonymes Les exceptions Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Les exceptions anonymes Noureddine DRISSI Expert consultant bases de données
  • 152. Objectif Savoir utiliser les exceptions anonymes Le langage PL/SQL alphorm.com™©
  • 153. Les fonctions SQLCODE et SQLERRM SQLCODE Permet de retrouver le code des exceptions Oracle SQLERRM Permet de retrouver le message des exceptions Oracle Le langage PL/SQL alphorm.com™©
  • 154. PRAGMA EXCEPTION_INIT Fonction Permet d’associer une exception utilisateur à un code d’erreur Oracle Syntaxe d’utilisation DECLARE <nom_exception> EXCEPTION; Le langage PL/SQL alphorm.com™© <nom_exception> EXCEPTION; PRAGMA EXCEPTION_INIT (<nom_exception>, <code_erreur_oracle>); BEGIN . . . EXCEPTION WHEN <nom_exception> THEN <instructions_plsql>; END;
  • 155. Les exceptions utilisateurs Le langage PL/SQL alphorm.com™©
  • 156. Les exceptions utilisateurs Les exceptions Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Les exceptions utilisateurs Noureddine DRISSI Expert consultant bases de données
  • 157. Objectif Savoir créer et utiliser des exceptions utilisateur Le langage PL/SQL alphorm.com™©
  • 158. Rôle des exceptions utilisateur Permettent de gérer les erreurs applicatives Le langage PL/SQL alphorm.com™©
  • 159. Syntaxe DECLARE <nom_exception> EXCEPTION; PRAGMA EXCEPTION_INIT (<nom_exception>, <code_erreur_oracle>); BEGIN . . . Le langage PL/SQL alphorm.com™© . . . RAISE <nom_exception> . . . EXCEPTION WHEN <nom_exception> THEN <instructions_plsql>; END;
  • 160. RAISE_APPLICATION_ERROR Permet de faire gérer une erreur survenue sur le serveur par un client Le langage PL/SQL alphorm.com™©
  • 161. La portée des exceptions Quitte le bloc dans lequel il est déclenchée et recherche une exception dans les blocs supérieurs Le langage PL/SQL alphorm.com™©
  • 162. Récapitulatif sur les exceptions et exercices Le langage PL/SQL alphorm.com™© exercices
  • 163. Récapitulatif sur les Les exceptions Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Récapitulatif sur les exceptions et exercices Noureddine DRISSI Expert consultant bases de données
  • 164. Objectifs Récapitulatif sur les exceptions Exercices Le langage PL/SQL alphorm.com™©
  • 165. Ce que nous avons étudiés Les types d’exceptions La création et le déclenchement d’une exception dans un bloc PL/SQL Les exceptions anonymes Les exceptions utilisateurs Le langage PL/SQL alphorm.com™©
  • 166. Les exceptions: exercice 7 (sol_exercice7.txt) Créez un bloc PL/SQL qui permet de modifier la comission d’un salarié et qui déclenche une exception si la comission est supérieur au salaire Créez un bloc PL/SQL qui permet de déclencher une exception « ORA- 0292: violation de contrainte (.) d’intégrité ... » lorsque l’on essaye de supprimer un salarié qui a traité des commandes Le langage PL/SQL alphorm.com™©
  • 167. Les programmes stockés Le langage PL/SQL alphorm.com™©
  • 168. Les procédures stockées Les programmes stockés Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Les procédures stockées Noureddine DRISSI Expert consultant bases de données
  • 169. Objectif Créer des procédures Le langage PL/SQL alphorm.com™©
  • 170. Qu’est-ce qu’une procédure stockée ? Un sous-programme Stokée dans la base de données sous format compilé Effectue un traitement Peut recevoir des arguments Le langage PL/SQL alphorm.com™©
  • 171. Création d’une procédure stockée Syntaxe [ CREATE [ OR REPLACE ] ] PROCEDURE <nom_procedure> [ ( <nom_argument> [ { IN | OUT | IN OUT } ] TYPE [ , . . . ] ) ] { IS | AS } BEGIN Le langage PL/SQL alphorm.com™© BEGIN . . . EXCEPTION <nom_exception> THEN <instructions>; END [ <nom_procedure> ];
  • 172. Appel d’une procédure Syntaxes <nom_procedure> [ (<argument1>, . . . ] ) ] ; CALL <nom_procedure> [ (<argument1>, . . . ] ) ] ; EXEC | EXECUTE <nom_procedure> [ (<argument1>, . . . ] ) ] ; Le langage PL/SQL alphorm.com™©
  • 173. Suppression d’une procédure Syntaxe DROP PROCEDURE <nom_procedure>; Le langage PL/SQL alphorm.com™©
  • 174. Les fonctions Le langage PL/SQL alphorm.com™©
  • 175. Les fonctions Les programmes stockés Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Les fonctions Noureddine DRISSI Expert consultant bases de données
  • 176. Objectifs Connaître les caractéristiques d’une fonction Créer et utiliser des fonctions Le langage PL/SQL alphorm.com™©
  • 177. Qu’est-ce qu’une fonction ? Identique à une procédure à la différence qu'elle retourne une valeur Stokée dans la base de données sous format compilé Peut recevoir des arguments (paramètres) Le langage PL/SQL alphorm.com™©
  • 178. Création d’une fonction Syntaxe [ CREATE [ OR REPLACE ] ] FONCTION <nom_fonction> [ ( <nom_argument> [ { IN | OUT | IN OUT } ] TYPE [ , . . . ] ) ] RETURN <type_valeur> { IS | AS } BEGIN Le langage PL/SQL alphorm.com™© BEGIN . . . RETURN EXPRESSION; EXCEPTION <nom_exception> THEN <instructions>; END [ <nom_fonction> ];
  • 179. Appel d’une fonction Syntaxes En PL/SQL BEGIN <nom_variable> := <nom_fonction>[ (<argument1>, . . . ] ) ] ; END; Le langage PL/SQL alphorm.com™© END; En SQL SELECT <nom_fonction>[ (<argument1>, . . . ] ) ] ;
  • 180. Suppression d’une fonction Syntaxe DROP FONCTION <nom_fonction> ; Le langage PL/SQL alphorm.com™©
  • 181. Les arguments Le langage PL/SQL alphorm.com™©
  • 182. Les arguments Les programmes stockés Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Les arguments Noureddine DRISSI Expert consultant bases de données
  • 183. Objectif Savoir déclarer et utiliser des arguments dans une procédure ou une fonction Le langage PL/SQL alphorm.com™©
  • 184. Déclaration des arguments Syntaxe <nom_argument> [ { IN | OUT | IN OUT } ] [ NOCOPY ] TYPE [ , . . . ] IN indique que le paramètre transmis par le programme appelant n'est pas modifiable par la fonction OUT indique que le paramètre est modifiable par la procédure IN OUT indique que le paramètre est transmis par le programme appelant et renseigné par la Le langage PL/SQL alphorm.com™© IN OUT indique que le paramètre est transmis par le programme appelant et renseigné par la fonction NOCOPY indique que le paramètre est transmis par référence (pointeur) et non par copie de la valeur TYPE représente le type SQL ou PL/SQL du paramètre := représente le symbole d'assignation d'une valeur par défaut DEFAULT identique à :=
  • 185. Maintenance des programmes stockés Le langage PL/SQL alphorm.com™© stockés
  • 186. Maintenance des Les programmes stockés Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Maintenance des programmes stockés Noureddine DRISSI Expert consultant bases de données
  • 187. Objectif Savoir maintenir les programmes stockés Le langage PL/SQL alphorm.com™©
  • 188. La compilation Syntaxe ALTER PROCEDURE <nom_procédure> COMPILE; ALTER FUNCTION <nom_fonction> COMPILE; Le langage PL/SQL alphorm.com™©
  • 189. Les meta-données Les vues USER_SOURCE pour les objets appartenant au schéma ALL_SOURCE pour les objets appartenant aux schémas accessibles DBA_SOURCE pour les objets appartenant à tous les schémas Le langage PL/SQL alphorm.com™©
  • 190. Récapitulatif sur les programmes stockés et exercices Le langage PL/SQL alphorm.com™© stockés et exercices
  • 191. Récapitulatif sur les Les programmes stockés Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Récapitulatif sur les programmes stockés et exercices Noureddine DRISSI Expert consultant bases de données
  • 192. Objectifs Rappel sur les programmes stockés Exercices Le langage PL/SQL alphorm.com™©
  • 193. Ce que nous avons étudiés Les procédures stockés avec et sans argument Les fonctions avec et sans arguments Les fonctions renvoyant une valeur scalaire Les fonctions renvoyant une table Les arguments avec le mode d’affection (IN, OUT, IN OUT, NOCOPY) Le langage PL/SQL alphorm.com™© Les arguments avec le mode d’affection (IN, OUT, IN OUT, NOCOPY)
  • 194. Les programmes stockés: exercice 8 (sol_exercice8.txt) Créez une procédure stockée nommée « updatequantite » qui met à jour la quantité en stock d’un article. La référence de l’article et la quantité seront passés en paramètres (arguments) à la procédure stockée. Créez une fonction nommée « valeurstock » qui retourne la valeur des articles en stock. Le langage PL/SQL alphorm.com™© articles en stock. Créez une fonction nommée « articleparcategorie » non stockée en base qui retourne le nombre d’article par catégorie pour toutes les catégories et qui les affichent.
  • 195. Les packages Le langage PL/SQL alphorm.com™©
  • 196. Introduction aux packages Les packages Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Introduction aux packages Noureddine DRISSI Expert consultant bases de données
  • 197. Objectifs Décrire la structure d’un package Comprendre le fonctionnement des packages Le langage PL/SQL alphorm.com™©
  • 198. Qu’est-ce qu’un package ? Un regroupement de procédures ou de fonctions Contient deux sections Une section de déclaration Une section de traitement Le langage PL/SQL alphorm.com™©
  • 199. Les avantages de l’utilisation d’un package Protection des données Amélioration des performances Persistance des objets Le langage PL/SQL alphorm.com™©
  • 200. PACKAGE Structure d’un package Déclaration: PROCEDURES / FONCTIONS VARIABLES / TYPE VARIABLE CURSEURS Spécification de package Eléments publics Le langage PL/SQL alphorm.com™© Corps de package PROCEDURE BEGIN . . . END; FONCTION BEGIN . . . END; VARIABLES CURSEURS Eléments privés
  • 201. Syntaxe de création d’un package CREATE [ OR REPLACE ] PACKAGE <nom_package> { IS | AS } [ Déclaration des variables et des types ] [ Déclaration des curseurs ] Le langage PL/SQL alphorm.com™© [ Déclaration des procédures et des fonctions ] END <nom_package>;
  • 202. Syntaxe de création d’un corps de package CREATE [ OR REPLACE ] PACKAGE BODY <nom_package> { IS | AS } [ Déclaration des variables et des types ] [ Déclaration des curseurs ] [ Déclaration des procédures et des fonctions ] Le langage PL/SQL alphorm.com™© [ Déclaration des procédures et des fonctions ] [ BEGIN <instructions_plsql>; [ EXCEPTIONS <gestion_exception> END <nom_package>;
  • 203. Utilisation des curseurs dans les packages Le langage PL/SQL alphorm.com™© packages
  • 204. Utilisation des curseurs Les packages Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Utilisation des curseurs dans les packages Noureddine DRISSI Expert consultant bases de données
  • 205. Objectif Utiliser des curseurs dans les packages Le langage PL/SQL alphorm.com™©
  • 206. Spécification du curseur Obligation d’utiliser la clause RETURN avec le curseur associé Un enregistrement %ROWTYPE Un enregistrement défini par l’utilisateur Le langage PL/SQL alphorm.com™©
  • 207. Maintenance des packages Le langage PL/SQL alphorm.com™©
  • 208. Maintenance des Les packages Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Maintenance des packages Noureddine DRISSI Expert consultant bases de données
  • 209. Objectif Modifier et supprimer un package Le langage PL/SQL alphorm.com™©
  • 210. Syntaxe de modification d’un package ALTER PACKAGE <nom_package> COMPILE [ PACKAGE | BODY ] ; Le langage PL/SQL alphorm.com™©
  • 211. Syntaxe de suppression d’un package DROP [ PACKAGE | BODY ] <nom_package> ; Le langage PL/SQL alphorm.com™©
  • 212. Récapitulatif sur les packages et exercices Le langage PL/SQL alphorm.com™© exercices
  • 213. Récapitulatif sur les Les packages Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Récapitulatif sur les packages et exercices Noureddine DRISSI Expert consultant bases de données
  • 214. Objectifs Rappel sur les packages Exercices Le langage PL/SQL alphorm.com™©
  • 215. Ce que nous avons étudiés Ce qu’est un package La structure d’un package Spécification de package Corps de package Utilisation des fonctions, procédures et des curseurs dans un package Le langage PL/SQL alphorm.com™© Utilisation des fonctions, procédures et des curseurs dans un package Utiliser les objets d’un package Maintenir un package
  • 216. Les packages: exercice 9 (sol_exercice9.txt) Créez un package nommé gestEmp avec les objets suivants: Un fonction qui contrôle l’existence d’un salarié à partir de son numéro. Une procédure qui permet de supprimer un salarié à partir de son numéro. Une procédure qui permet d’augmenter le salaire d’un salarié. La procédure doit reçevoir deux arguments: le premier est le numéro du salarié, le deuxième le pourcentage d’augmention). Le langage PL/SQL alphorm.com™© doit reçevoir deux arguments: le premier est le numéro du salarié, le deuxième le pourcentage d’augmention). Une procédure qui affiche tous les salariés dont le salaire est supérieur à la moyenne des salaires (cette procédure devra s’appuyer sur un curseur nommé « cur_sal »)
  • 217. Les triggers (déclencheurs) Le langage PL/SQL alphorm.com™©
  • 218. Introduction Les déclencheurs Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Introduction Noureddine DRISSI Expert consultant bases de données
  • 219. Objectifs Décrire un déclencheur Connaître les caractéristiques d’un déclencheur Le langage PL/SQL alphorm.com™©
  • 220. Un déclencheur c’est quoi ? Définit une action qui doit se déclencher lorsqu’un évènement survient sur la base de données Objet stocké en base Associé à une table ou à une vue Pas de COMMIT/ROLLBACK dans un déclencheur Le langage PL/SQL alphorm.com™© Pas de COMMIT/ROLLBACK dans un déclencheur
  • 221. Avantage du déclencheur Ajouter des contraintes sur les valeurs des colonnes d’une table Réaliser un audit des changements sur les données (logs) Ajout des règles de gestion Publier des informations concernant divers évènements Le langage PL/SQL alphorm.com™©
  • 222. Les niveaux d’exécutions De niveau table (STATEMENT) Exécuté une seule fois quelque soit le nombre de ligne modifié De niveau enregistrement (ROW) Exécuté séparément pour chaque ligne modifiée FOR EACH ROW Le langage PL/SQL alphorm.com™© FOR EACH ROW
  • 223. Les types de déclencheurs ? Les déclencheurs LMD Avant ou après INSERT, UPDATE ou DELETE Les déclencheurs INSTEAD OF De niveau ligne seulement Le langage PL/SQL alphorm.com™© De niveau ligne seulement S’exécute à la place de l’instruction qui a déclenché le trigger Les déclencheurs SYSTEME Démarrage ou arrêt d’une base A la création, suppression ou modification d’un objet (DDL) A la connexion ou déconnexion d’un utilisateur
  • 224. Syntaxe de création CREATE [ OR REPLACE ] TRIGGER <nom_trigger> { BEFORE | AFTER | INSTEAD OF } <nom_evenement1> [ <nomevenement2> ] [ CLAUSE_REFERENCING] [ WHEN CONDITION ] [ FOR EACH ROW ] [ DECLARE . . . ] BEGIN Le langage PL/SQL alphorm.com™© . . . [ EXCEPTION . . . ] END [ <nom_trigger> ] ;
  • 225. Les déclencheurs LMD Le langage PL/SQL alphorm.com™©
  • 226. Les déclencheurs LMD Les déclencheurs Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Les déclencheurs LMD Noureddine DRISSI Expert consultant bases de données
  • 227. Objectif Créer des déclencheurs LMD Le langage PL/SQL alphorm.com™©
  • 228. Rappel: syntaxe de création CREATE [ OR REPLACE ] TRIGGER <nom_trigger> { BEFORE | AFTER | INSTEAD OF } <nom_evenement1> [ OR <nomevenement2> ] [ CLAUSE_REFERENCING] [ WHEN CONDITION ] [ FOR EACH ROW ] [ DECLARE . . . ] Le langage PL/SQL alphorm.com™© BEGIN . . . [ EXCEPTION . . . ] END [ <nom_trigger> ] ;
  • 229. Déclenchement Ce qui déclenche le déclencheur INSERT AVANT ou APRES insertion UPDATE Le langage PL/SQL alphorm.com™© AVANT ou APRES mise à jour Possibilité UPDATE TO <champ1> [ , <champN> ] DELETE AVANT ou APRES suppression
  • 230. Caractéristiques Doit posséder un nom unique La définition du trigger porte sur: une est une seule table pas une vue. Le langage PL/SQL alphorm.com™©
  • 231. Nombre de trigger par table Possibilité de créer un nombre illimité de déclencheurs Possibilité de définir plusieurs déclencheurs d’un même type Exécution séquentielle des déclencheurs s’il en existe plusieurs Le langage PL/SQL alphorm.com™©
  • 232. Le niveau d’exécution Le langage PL/SQL alphorm.com™©
  • 233. Le niveau d’exécution Les déclencheurs Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Le niveau d’exécution Noureddine DRISSI Expert consultant bases de données
  • 234. Objectif Comprendre le niveau d’exécution d’un déclencheur Le langage PL/SQL alphorm.com™©
  • 235. Rappel: syntaxe de création CREATE [ OR REPLACE ] TRIGGER <nom_trigger> { BEFORE | AFTER | INSTEAD OF } <nom_evenement1> [ <nomevenement2> ] [ CLAUSE_REFERENCING] [ WHEN CONDITION ] [ FOR EACH ROW ] [ DECLARE . . . ] BEGIN Le langage PL/SQL alphorm.com™© BEGIN . . . [ EXCEPTION . . . ] END [ <nom_trigger> ] ;
  • 236. Niveaux d’exécution De niveau table (STATEMENT) Exécuté une seule fois quelque soit le nombre de ligne modifié De niveau enregistrement (ROW) Exécuté séparément pour chaque ligne modifiée FOR EACH ROW Le langage PL/SQL alphorm.com™© FOR EACH ROW
  • 237. Accès aux valeurs via :OLD et :NEW Le langage PL/SQL alphorm.com™©
  • 238. Accès aux valeurs via :OLD Les déclencheurs Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Accès aux valeurs via :OLD et :NEW Noureddine DRISSI Expert consultant bases de données
  • 239. Objectif Créer des déclencheurs en utilisant les valeurs des attributs :OLD et :NEW Le langage PL/SQL alphorm.com™©
  • 240. Valeur des attributs Possibilité d’accéder à la valeur des attributs avant et après modification :OLD.nom_attribut (permet d’accéder à la valeur avant modification) :NEW.nom_attribut (permet d’accéder à la valeur après modification) Le langage PL/SQL alphorm.com™©
  • 241. Précisions INSERT Pas d’accès à l’élément OLD (n’existe pas) UPDATE Accès possible à l’élément OLD et NEW Le langage PL/SQL alphorm.com™© DELETE Pas d’accès à l’élément NEW (n’existe plus) Utilisable uniquement avec un déclencheur de niveau enregistrement
  • 242. La clause REFERENCING Fonction Permet de créer un alias pour « :OLD » et « :NEW » SYNTAXE REFERENCING [ OLD AS <nom_ancien> ] [ NEW AS <nom_nouveau> ] Le langage PL/SQL alphorm.com™©
  • 243. Déclenchement conditionnel et les prédicats Le langage PL/SQL alphorm.com™© prédicats
  • 244. Déclenchement Les déclencheurs Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Déclenchement conditionnel et les prédicats Noureddine DRISSI Expert consultant bases de données
  • 245. Objectifs Créer un déclencheur avec un déclenchement conditionnel (WHEN) Créer un déclencheur avec les prédicats Le langage PL/SQL alphorm.com™©
  • 246. Clause WHEN Ne s’applique qu’aux déclencheurs de niveau enregistrement Syntaxe WHEN <condition> Le langage PL/SQL alphorm.com™©
  • 247. Les fonctions prédicats INSERTING Retourne TRUE si l’instruction LMD est un INSERT UPDATING Retourne TRUE si l’instruction LMD est un UPDATE Le langage PL/SQL alphorm.com™© DELETING Retourne TRUE si l’instruction LMD est un DELETE
  • 248. Complément sur les déclencheurs Le langage PL/SQL alphorm.com™©
  • 249. Complément sur les Les déclencheurs Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Complément sur les déclencheurs Noureddine DRISSI Expert consultant bases de données
  • 250. Objectifs Connaître l’utilisation des déclencheurs INSTEAD OF Utilisation de l’ordre PRAGMA AUTONOMOUS_TRANSACTION Réaliser les tâches d’exploitation des déclencheurs Le langage PL/SQL alphorm.com™©
  • 251. Les déclencheurs INSTEAD OF Définis uniquement sur des objets vues S’exécute à la place de l’ordre LMD qui a déclenché le déclencheur Le langage PL/SQL alphorm.com™©
  • 252. Transaction autonome Les déclencheurs de niveau ligne, ne peuvent pas lire ou modifier la table (table en mutation) sur laquelle porte le déclencheur Les déclencheurs de niveau table peuvent lire et modifier la table sur laquelle porte le déclencheur Possibilité d’utiliser la directive PRAGMA AUTONOMOUS_TRANSACTION Le langage PL/SQL alphorm.com™© AUTONOMOUS_TRANSACTION Possibilité d’utiliser les commandes « COMMIT » et « ROLLBACK »
  • 253. Autres caractéristiques Triggers en cascade Un trigger peut provoquer le déclenchement d'un autre trigger. ORACLE autorise jusqu'à 32 triggers en cascade à un moment donné. Limite Un trigger ligne ne peut pas lire et/ou modifier la table concernée (appelée Le langage PL/SQL alphorm.com™© Un trigger ligne ne peut pas lire et/ou modifier la table concernée (appelée table mutante) par l'instruction (INSERT, UPDATE ou DELETE) qui a déclenché le trigger.
  • 254. Création de déclencheurs Conditions nécessaires pour créer un trigger Privilège CREATE TRIGGER Posséder (ou privilege ALTER, ALTER ANY) la table sur laquelle on veut définir le déclencheur Modification de triggers Le langage PL/SQL alphorm.com™© Modification de triggers CREATE TRIGGER suivie de OR REPLACE ou bien on supprime le trigger (DROP TRIGGER nomtrigger) et on le crée à nouveau.
  • 255. Activation et désactivation Un trigger peut être activé ou désactivé. Si désactivé, ORACLE le stocke mais l’ignore. Possibilité de désactiver un trigger si : il référence un objet non disponible on veut charger rapidement un volume de données important ou recharger Le langage PL/SQL alphorm.com™© on veut charger rapidement un volume de données important ou recharger des données déjà contrôlées. Par défaut, un trigger est activé dès sa création.
  • 256. Activation et désactivation Pour désactiver ou activer un trigger , on utilise l’instruction ALTER ALTER TRIGGER <nomtrigger> DISABLE; ALTER TABLE <nomtable> DISABLE ALL TRIGGERS; ALTER TRIGGER <nomtrigger> ENABLE; ALTER TABLE <nomtable> ENABLE ALL TRIGGERS; Le langage PL/SQL alphorm.com™© ALTER TABLE <nomtable> ENABLE ALL TRIGGERS;
  • 257. Gestion des exceptions La procédure RAISE_APPLICATION_ERROR (error_number,error_message) error_number doit être un entier compris entre -20000 et -20999 error_message doit être une chaîne de 500 caractères maximum. Quand cette procédure est appelée, elle termine le trigger, défait la transaction (ROLLBACK), renvoie un numéro d'erreur défini par l'utilisateur et Le langage PL/SQL alphorm.com™© Quand cette procédure est appelée, elle termine le trigger, défait la transaction (ROLLBACK), renvoie un numéro d'erreur défini par l'utilisateur et un message à l'application.
  • 258. Récapitulatif sur les déclencheurs et exercices Le langage PL/SQL alphorm.com™© exercices
  • 259. Récapitulatif sur les Les déclencheurs Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Récapitulatif sur les déclencheurs et exercices Noureddine DRISSI Expert consultant bases de données
  • 260. Objectifs Rappel sur les déclencheurs Exercices Le langage PL/SQL alphorm.com™©
  • 261. Ce que nous avons étudiés Les déclencheurs LMD Le niveau d’exécution des déclencheurs (INSTRUCTION ou LIGNE) Comment accéder aux valeurs via OLD et NEW Déclenchement conditionnel (WHEN) Le langage PL/SQL alphorm.com™© Les prédicats (INSERTING, UPDATING et DELETING) Les déclencheurs INSTEAD OF La directive PRAGMA AUTONOMOUS_TRANSACTION Les tâches d’exploitation des déclencheurs
  • 262. Les déclencheurs: exercice 10 (sol_exercice10.txt) Créez un déclencheur LMD nommé trigLogClients qui se déclenche après toute instruction INSERT, UPDATE ou DELETE sur la table « clients ». Le trigger doit tracer les informartions ci-dessous dans une table que vous aurez crée au préalable: La date d’exécution et le user ayant effectué l’instruction La valeur AVANT et APRES pour les colonnes NUMERO_CLI, NOM, ADRESSE, Le langage PL/SQL alphorm.com™© La valeur AVANT et APRES pour les colonnes NUMERO_CLI, NOM, ADRESSE, CODE_POSTAL, VILLE et TELEPHONE L’instruction qui à déclenchée le déclencheur (INSERT, UPDATE ou DELETE)
  • 263. Conclusion Le langage PL/SQL alphorm.com™©
  • 264. Le mot de la fin Conclusion Le langage PL/SQL alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Le mot de la fin Noureddine DRISSI Expert consultant bases de données
  • 265. Objectifs Maîtriser le langage PL/SQL Utiliser des traitements stockés et des triggers dans les applications Le langage PL/SQL alphorm.com™©
  • 266. Plan de cours Module 1: Présentation du PL/SQL Module 2: Les variables Module 3: Accès à la base de données et ordres SQL Module 4: Les structures de contrôle Module 5: Les curseurs Le langage PL/SQL alphorm.com™© Module 5: Les curseurs Module 6: Gestion des erreurs Module 7: Les programmes stockés Module 8: Les triggers Module 9: Les packages Module 10: Les déclencheurs
  • 267. Conclusion A venir: Le transact SQL La modélisation au sens MERISE Le langage PL/SQL alphorm.com™©
  • 268. FIN Merci pour votre attention Conclusion Le langage PL/SQL alphorm.com™© Merci pour votre attention