[ORACLE-PL/SQL] [Résolu] Trigger et appel de procédure externe

Trigger et appel de procédure externe [ORACLE-PL/SQL] [Résolu] - SQL/NoSQL - Programmation

Marsh Posté le 29-11-2006 à 10:35:17    

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 :
  1. CREATE OR REPLACE TRIGGER "SVM810"."ENVOISTRS"
  2. AFTER UPDATE OF "JCJOBSTS" ON "SVM810"."F986110" FOR EACH ROW
  3. DECLARE
  4.    lignecmd VARCHAR2(100);
  5. BEGIN
  6.    IF (:new.jcjobsts = 'D') THEN
  7.       lignecmd := '''/exploit/scripts/envoiSTRS ' || :new.jcfndfuf2 || '''';
  8.   exec shell(lignecmd);
  9.   update svm810.F986110 set JCJOBPTY='9' where JCJOBNBR=:new.jcjobnbr and :new.jcjobsts='D';
  10.    ELSIF (:new.jcjobsts = 'E') THEN
  11.    dbms_output.put_line( '2' ) ;
  12.    END IF;
  13.    EXCEPTION
  14.      WHEN OTHERS THEN
  15.        -- Consider logging the error and then re-raise
  16.        RAISE;
  17. END ENVOISTRS;
  18. /


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
Reply

Marsh Posté le 29-11-2006 à 10:35:17   

Reply

Marsh Posté le 29-11-2006 à 11:16:11    

Bon déjà ça doit pas être l'instruction EXEC qu'il faut utiliser mais l'instruction CALL.
Mais ça ne résoud pas mon problème.J'ai toujours la même erreur.
Merci pour votre aide.
Cordialement,

Reply

Marsh Posté le 29-11-2006 à 15:11:24    

j'allais le dire... exec dans un trigger, c'est moyen.
 
http://www.google.com/search?hl=fr [...] rigger&lr=
first link :o
 
d'après le souci du gars (ps qui marche trop bien :o) faut ni call ni exec... juste le nom de ta ps comme ça au milieu du code.


Message édité par MagicBuzz le 29-11-2006 à 15:11:34
Reply

Marsh Posté le 30-11-2006 à 15:21:24    

Finalement, j'ai trouvé.
Il semble qu'une procédure stockée ne soit pas utilisable.
En revanche une fonction, elle, passe bien.
Mon problème est résolu.
Merci pour cette réponse.
Cordialement,

Reply

Marsh Posté le 30-11-2006 à 19:36:40    

bien sure qu'on sait appelé une procédure dans un trigger...  
 
Pour ton info, il n'y a pas de différence entre une fonction et une précédure ormi que l'une renvoie une valeur...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed