0% ont trouvé ce document utile (0 vote)
107 vues24 pages

Chap2 PLSQL Procédues Fonctions Trigger

Le document présente les procédures stockées, fonctions stockées et déclencheurs en PL/SQL. Les procédures stockées permettent d'effectuer des actions et échanger des valeurs via des arguments. Les fonctions stockées retournent une valeur. Les déclencheurs s'exécutent automatiquement lors d'événements sur une table et peuvent appeler d'autres procédures.

Transféré par

Chiheb Mezrigui
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
107 vues24 pages

Chap2 PLSQL Procédues Fonctions Trigger

Le document présente les procédures stockées, fonctions stockées et déclencheurs en PL/SQL. Les procédures stockées permettent d'effectuer des actions et échanger des valeurs via des arguments. Les fonctions stockées retournent une valeur. Les déclencheurs s'exécutent automatiquement lors d'événements sur une table et peuvent appeler d'autres procédures.

Transféré par

Chiheb Mezrigui
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 24

Cours: Systèmes de Gestion de Bases de Données :

Procedural Language /
Structured Query
Language
(PL/SQL)

Présenté par: Mme Olfa DRIDI


[email protected]

1 © Olfa DRIDI
Les procédures et les fonctions stockées

2 © Olfa DRIDI
PL/SQL

Procédures stockées
• Les procédures sont utilisées pour effectuer une action
spécifique.
• Elles échangent les valeurs par l'intermédiaire d'une liste
d'arguments.
• Elle peut être stockée dans la BD comme un objet.

3 ©
PL/SQL

Syntaxe

4 ©
PL/SQL

5 ©
PL/SQL

Exemple

6 ©
PL/SQL

Exemple

7 ©
PL/SQL

Suppression des procédures

8 ©
PL/SQL

Fonctions stockées
• Les fonctions sont utilisées pour retourner une valeur
• Les fonctions sont appelées comme une partie d’expression

9 ©
PL/SQL

Syntaxe

10 ©
PL/SQL

Exemple

11 ©
Les déclencheurs

12 © Olfa DRIDI
PL/SQL

Les déclencheurs
• Les déclencheurs de BD sont des objets de code PL/SQL
stockés dans la base de données et qui s'exécutent
automatiquement lorsqu'un événement se produit
• Les événements déclencheurs peuvent être:
• Des insertions dans une table
• la connexion d'un utilisateur à la base de données
• Ou encore la tentative de supprimer une table ou de modifier les
paramètres d'audit
• Les triggers de BD sont associés à une et une seule table
• Il est opérationnel jusqu’à la suppression de table à laquelle il
est lié

13 ©
PL/SQL

Les déclencheurs
• Les déclencheurs peuvent appeler d'autres procédures ou
fonctions
• Le déclencheur peut être conçu pour s'exécuter une fois pour
l'instruction, ou avec chaque ligne modifiée
• Le traitement associé au trigger peut être exécuté
• soit une fois, suite à l’événement qui l’a déclenché -trigger par
ordre
• soit pour chaque ligne de la table concernée par l’événement -
trigger ligne

14 ©
PL/SQL

Les déclencheurs
Deux types: DML triggers et System triggers
• DML triggers
• Permet d’enregistrer les valeurs de toutes les modifications
apportées à la BD
• System triggers
• auditing de toute action de création, de suppression ou de
connexion à la base

15 ©
PL/SQL

Syntaxe
CREATE [OR REPLACE] TRIGGER nom_trigger
instant liste_evts
ON nom_table ou nom_vue
[REFERENCING OLD AS old | NEW AS new]
[FOR EACH ROW]
[WHEN ( condition ) ]
Corps du trigger

instant ::= AFTER | BEFORE pour les tables


liste_evts ::= evt {OR evt}
evt ::= DELETE | INSERT |
UPDATE [OF { liste_cols }]
liste_col ::= nom_col { , nom_col }
Corps du programme PL/SQL

©
PL/SQL

Syntaxe

On définit :
la table à laquelle le trigger est lié,
les instructions du LMD qui déclenchent le trigger
le moment où le trigger va se déclencher par rapport à
l'instruction LMD (avant ou après)
si le trigger se déclenche une seule fois pour toute
l'instruction (i.e. trigger instruction), ou une fois pour
chaque ligne modifiée/insérée/supprimée. (i.e. trigger
ligne, avec l'option FOR EACH ROW)
et éventuellement une condition supplémentaire de
déclenchement (clause WHEN)

©
PL/SQL

AFTER ou BEFORE

Un trigger instruction se déclenche une fois, suite à une


instruction LMD.
Un trigger ligne (FOR EACH ROW) se déclenche pour
chaque ligne modifiée par l'instruction LMD.
18 ©
PL/SQL

Ligne d’un trigger


Dans un trigger ligne, on peut faire référence à la ligne
courante, celle pour laquelle le trigger s'exécute.
Pour cette ligne, on a accès à la valeur avant l'instruction LMD
(nommée :old) et à la valeur après l'instruction (nommée
:new).
:old :new
INSERT null ligne insérée
DELETE ligne supprimée null
UPDATE ligne avant modif ligne après modif

On peut définir une condition pour un trigger ligne : le


trigger se déclenchera pour chaque ligne vérifiant la
condition: clause WHEN.

©
PL/SQL

Exemple

CREATE OR REPLACE TRIGGER journal_emp


AFTER UPDATE OF salaire ON Employe
FOR EACH ROW
WHEN (new.salaire < old.salaire) /* attention, ici on
utilise new et pas :new */
BEGIN
INSERT INTO EMP_LOG(NumEmp, date_evt, msg)
VALUES (:new.NumEmp, sysdate, 'salaire diminué');
END ;

©
PL/SQL

Exemple

CREATE OR REPLACE TRIGGER ctrlmiseajour


BEFORE INSERT OR DELETE OR UPDATE ON EMPLOYES DECLARE MESSAGE
EXCEPTION;
BEGIN
IF (TO_CHAR(SYSDATE,'DY')= 'SAM.’ OR
TO_CHAR(SYSDATE,'DY’)='DIM.') THEN RAISE MESSAGE;
END IF;
EXCEPTION
WHEN MESSAGE THEN DBMS_OUTPUT.PUT_LINE(’on ne met pas à
jour à la fin de la semaine’);
END;

21 ©
PL/SQL

Exemple 3

22 ©
© Olfa DRIDI, FSB, 2020

Les prédicats INSERTING, UPDATING, DELETING

• Lorsqu’un trigger porte sur les opérations DML, nous


pouvons ajouter des prédicats dans notre code, pour
indiquer les opérations de déclenchement :

CREATE TRIGGER ...


BEFORE INSERT OR UPDATE ON employe
.......
BEGIN
......
IF INSERTING THEN ....... END IF;
IF UPDATING THEN ........ END IF;
......
END;

©
Questions ????????

© Olfa DRIDI

Vous aimerez peut-être aussi