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 = :[Link];
END suppclient;
Dans les triggers de tuples ( FOR EACH ROW), on peut
manipuler les valeurs traitées, directement en mémoire :
:[Link] : ancienne valeur (DELETE | Update)
:[Link] : 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 (:[Link], :[Link],
:[Link]);
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;