Bonjour,
Je souhaite créer un trigger Oracle qui lance une procédure externe.
La procédure (appelée SHELL) fonctionne bien quand je la lance directement depuis une session SQL avec la commande EXEC.
Voilà où j'en suis actuellement :
Code :
- CREATE OR REPLACE TRIGGER "SVM810"."ENVOISTRS"
- AFTER UPDATE OF "JCJOBSTS" ON "SVM810"."F986110" FOR EACH ROW
- DECLARE
- lignecmd VARCHAR2(100);
- BEGIN
- IF (:new.jcjobsts = 'D') THEN
- lignecmd := '''/exploit/scripts/envoiSTRS ' || :new.jcfndfuf2 || '''';
- exec shell(lignecmd);
- update svm810.F986110 set JCJOBPTY='9' where JCJOBNBR=:new.jcjobnbr and :new.jcjobsts='D';
- ELSIF (:new.jcjobsts = 'E') THEN
- dbms_output.put_line( '2' ) ;
- END IF;
- EXCEPTION
- WHEN OTHERS THEN
- -- Consider logging the error and then re-raise
- RAISE;
- END ENVOISTRS;
- /
|
A la compilation j'ai l'erreur suivante sur la ligne 8 :
PLS-00103: Symbole "SHELL" rencontré à la place d'un des symboles suivants :
:= . ( @ % ;
Symbole ":=" a été substitué à "SHELL" pour continuer.
Avez-vous une idée ?
Merci d'avance.
Lolobreizh
Message édité par lolobreizh le 30-11-2006 à 15:22:18