Erreur à la compilation d'un trigger composé
Bonjour tout le monde,
je dois créer un déclencheur composé qui permet de gérer les tables mutantes.
Voici mon code, actuellement:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
CREATE OR REPLACE TRIGGER LimitEtudGroupes FOR INSERT OR UPDATE ON Parcours_HE
COMPOUND TRIGGER
TYPE ArrayOfRowid IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
t_newRowids ArrayOfRowids;
v_NbreEtudiants INT;
i NUMBER;
BEFORE STATEMENT IS
BEGIN
t_newRowids.DELETE;
END BEFORE STATEMENT;
AFTER EACH ROW IS
BEGIN
t_newRowids(t_newRowids.COUNT + 1) := :NEW.ROWID;
END AFTER EACH ROW;
AFTER STATEMENT IS
BEGIN
E_MaxEtudiants EXCEPTION;
FOR i IN t_newRowids.FIRST.. t_newRowids.LAST LOOP
SELECT COUNT(*) INTO v_NbreEtudiants
FROM Parcours_HE
WHERE ROWID = t_newRowids(i)
AND Refgroupe = t_newRowids(i).Refgroupe
AND Ansco = t_newRowids(i).Ansco
AND Refformdet = t_newRowids(i).Refformdet
AND Annetud = t_newRowids(i).Annetud
AND Refimplan = t_newRowids(i).Refimplan;
IF(v_NbreEtudiants >= 25) THEN
RAISE E_MaxEtudiants;
END IF;
END LOOP;
EXCEPTION
WHEN E_MaxEtudiants THEN RAISE_APPLICATION_ERROR(-20001, 'Le nombre maximum d''etudiants est depasse pour le groupe ' || :NEW.Refgroupe || ' et l''annee ' || :NEW.Ansco);
END AFTER STATEMENT;
END LimitEtudGroupes; |
Malheureusement, à la compilation, j'ai ce message d'erreur:
Citation:
Erreur(19,18): PLS-00103: Encountered the symbol "EXCEPTION" when expecting one of the following: := . ( @ % ; The symbol "EXCEPTION" was ignored.
et je ne vois pas ce qui fait planter la compilation ... Quelqu'un pourrait-il m'éclaire s'il vous plait ?
Aussi, est-ce que la requête dans ma boucle FOR est correcte ? J'entends par là, dois-je faire le "WHERE ROWID = t_newRowids(i)" ? Et est-ce que les différents "t_newRowids(i).QuelqueChose" se font de cette façon ? Ou bien je peux accéder à ces valeurs différemment ?
Merci d'avance :)