Vous êtes sur la page 1sur 35

Cours 5 : Les sous programmes stockés

 Sont des blocs PL/SQL qui possèdent un nom


 Consistent à ranger le block PL/SQL compilé
dans la base de données (CREATE)
 Peuvent être réutilisés sans être recompilés
(EXECUTE)
 Peuvent être appelés de n'importe bloc
PL/SQL
 Peuvent être regroupés dans un package.
 Syntaxe
 La procédure stockée est appelée par les
applications soit :
◦ En utilisant son nom dans un bloc PL/SQL (autre
procédure)

◦ Sous SQL*PLUS :
 Syntaxe
 Comme tout objet manipulé par Oracle, les
procédures et les fonctions peuvent être
supprimées si nécessaire
 Cette suppression est assurée par la
commande suivante :
Cours 7 : Les packages
 Un objet PL/SQL qui stocke d'autres types
d'objet : procédures, fonctions, curseurs,
variables, ...
 Consiste en deux parties :
◦ Spécification (déclaration)
◦ Corps (implémentation)
 Ne peut pas être appelé, ni paramétré ni
imbriqué
 Permet à Oracle de lire plusieurs objets à la
fois en mémoire.
 Syntaxe
Cours 8 : Les déclencheurs
 Action ou un ensemble d’actions déclenchées
automatiquement lorsqu’une condition se trouve
satisfaite après l’apparition d’un évènement.

 Un déclencheur suit la règle ECA :


 E: Evènement : mise à jour, suppression, insertion
 C : Condition : expression logique vraie ou fausse.
 A : Action : procédure exécutée lorsque la condition
est vérifiée.
 Maintien des contraintes d’intégrité.
 Propagation des mises à jour dans une bases de
données distribuées.
 Sécurité.
CREATE [OR REPLACE] TRIGGER nom_Trigger
{BEFORE|AFTER|INSTEAD OF} //évènement
{INSERT |DELETE|UPDATE [OF liste de données]
ON table
[FOR EACH ROW]
[WHEN (condition de déclenchement)]//condition
DECLARE
--Déclarations variables, curseurs…
BEGIN
--Traitement
EXCEPTION
--Gestionnaire d’exceptions
END [nom_Trigger];
 Ecrire un déclencheur qui affiche un message lorsque des n-
uplets sont supprimés de la table CHERCHEUR.

CREATE OR REPLACE TRIGGER TRG_DEL_CHERCH


AFTER DELETE
ON CHERCHEUR
BEGIN
Dbms_output.put_line (‘TRG_DEL_CHERCH déclenché’);
END TRG_DEL_CHERCH;
 Ecrire un déclencheur qui supprime toutes les commandes
d’un client avant sa suppression.

CREATE TRIGGER suppclient


BEFORE DELETE ON Client
FOR EACH ROW
BEGIN
DELETE FROM COMMANDE WHERE Codcli = :old.Codcli;
END suppclient;
 Dans les triggers de tuples ( FOR EACH ROW), on peut
manipuler les valeurs traitées, directement en mémoire :
 :old.attribut : ancienne valeur (DELETE | Update)
 :new.attribut : nouvelle valeur (INSERT| UPDATE).
 Exemple : Trigger pour la suppression et sauvegarde dans
une table de journal.

CREATE OR REPLACE TRIGGER suppression_ligne


BEFORE DELETE ON produit
FOR EACH ROW
BEGIN
INSERT INTO journal VALUES (:old.codprod, :old.libelle,
:old.qte);
END suppression_ligne;
-- END: aussi juste.
 Lorsqu’un trigger est lancé sur un serveur et qui se termine
sans traitement d’exception, l’évènement qui l’a déclenché se
poursuit correctement.
 Deux types de triggers peuvent être définis :
 Trigger d’énoncé : lancé une seule fois.
 Trigger de tuples : exécuté autant de fois qu’il y a des tuples à
insérer, à modifier ou à supprimer.
 Par défaut, un trigger est actif, il peut être désactivé.

ALTER TRIGGER nom_trigger DISABLE;


ALTER TRIGGER nom_trigger ENABLE;

Vous aimerez peut-être aussi