Cours PL/SQL
E.Coquery
emmanuel.coquery@liris.cnrs.fr
Cours PL/SQL
Pourquoi ?
Les contraintes predefinies ne sont pas toujours suffisantes.
Exemple : tout nouveau prix pour un CD doit avoir une date
de debut superieure `a celle des autres prix pour ce CD.
Cours PL/SQL
PL/SQL
Cours PL/SQL
Instructions de base
Instructions de controle
BEGIN ... END ; definit le debut et la fin dun bloc dinstructions
/ si seul sur une ligne : fin dune definition (declenche
levaluation)
variable := valeur ; affectation
IF condition THEN ... ELSIF condition THEN ... ELSE ... END IF ;
Cours PL/SQL
Variables
Variables
DECLARE
variable1 type1 ;
variable2 type2 ;
variable3 type3 := val ;
BEGIN
...
END ;
Cours PL/SQL
Variables
SELECT INTO
Cours PL/SQL
Fonctions, proc
edures et triggers
Fonctions
Cours PL/SQL
Fonctions, proc
edures et triggers
Procedures
Cours PL/SQL
Fonctions, proc
edures et triggers
Triggers : INSERT
Executes lors dune insertion
CREATE OR REPLACE TRIGGER nom
BEFORE (ou bien AFTER) INSERT ON table
FOR EACH ROW
DECLARE
...
BEGIN
...
END ;
/
show errors
:NEW represente le n-uplet insere (modifiable si BEFORE)
Cours PL/SQL
Fonctions, proc
edures et triggers
Triggers : UPDATE
Executes lors dune mise `a jour
CREATE OR REPLACE TRIGGER nom
BEFORE (ou bien AFTER) UPDATE ON table
FOR EACH ROW
DECLARE
...
BEGIN
...
END ;
/
show errors
:NEW represente le nouveau n-uplet (modifiable si BEFORE)
:OLD represente lancien n-uplet
Cours PL/SQL
Fonctions, proc
edures et triggers
Triggers : DELETE
Executes lors dune mise `a jour
CREATE OR REPLACE TRIGGER nom
BEFORE (ou bien AFTER) DELETE ON table
FOR EACH ROW
DECLARE
...
BEGIN
...
END ;
/
show errors
:OLD represente lancien n-uplet
Cours PL/SQL
Fonctions, proc
edures et triggers
Triggers : exemple
CREATE OR REPLACE TRIGGER verifie date
BEFORE UPDATE ON prix
FOR EACH ROW
DECLARE
date max DATE ;
BEGIN
SELECT MAX(date) INTO date max
FROM prix
WHERE code barre = :NEW.code barre ;
IF :NEW.date date max
THEN
RAISE APPLICATION ERROR(-1,Date illegale) ;
END IF ;
END ;
/
show errors
Cours PL/SQL
Exceptions
Exceptions - rattrapage
Rattrapage dexceptions :
BEGIN
...
EXCEPTION
WHEN exception1 THEN
...
WHEN exception2 THEN
...
WHEN OTHERS THEN
...
END ;
Cours PL/SQL
Exceptions
Declenchement dexceptions :
RAISE nom exception ;
Cours PL/SQL
Curseurs
Curseurs
Pointeurs associes au resultat dune requete.
...
DECLARE
CURSOR nom IS
SELECT ... ;
...
BEGIN
OPEN nom ;
LOOP
FETCH nom INTO variable ;
EXIT WHEN nom%NOTFOUND ;
...
END LOOP ;
END ;
Cours PL/SQL
Curseurs
Curseur et FOR
Cours PL/SQL
Curseurs
Exemple
CREATE OR REPLACE PROCEDURE CORRIGE ARTISTES() AS
CURSOR cd artiste IS
SELECT code barre,num artiste
FROM cd NATURAL JOIN artiste ;
code INTEGER ;
art INTEGER ;
BEGIN
FOR code,art IN cd artiste
LOOP
DELETE FROM piste artiste
WHERE code barre = code AND num artiste = art ;
END LOOP ;
END ;
Cours PL/SQL
R
ef
erences
References