bonjour

lors d'un insert, je souhaite appeler une procedure dans le trigger
et passer la ligne insérée en argument de la procedure

la table ttest (id int, lib varchar, name varchar);

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE OR REPLACE PROCEDURE p (r IN ttest%ROWTYPE)
IS
BEGIN
   DBMS_OUTPUT.put_line (r.lib);
END;
/
 
CREATE OR REPLACE TRIGGER SUN.ttest_insert
   AFTER INSERT
   ON ttest
   REFERENCING NEW AS NEW
   FOR EACH ROW
BEGIN
   /*DBMS_OUTPUT.put_line (:NEW.lib);*/
   p (:NEW);
END;
/
/
dans le cas présent, le trigger ne compile pas :
PLS-00049: variable de lien erronée 'NEW'
donc, y a t il moyen de lasser le :new entier en param, et non tous les attribut un par un (:new.id, :new.lib, :new.name) ???? (si oui comment?)

l'exemple est bien entendu très simplifié, on résound le problème en collant le code de la procedure dans le trigger,
mais j'utilise des procedures notamment pour mutualiser un peu de code, et que ça fait plus propre

merci
++