Trigger appel Fonction Java

titexe -  
 Utilisateur anonyme -
Bonjour,

j'ai crée un trigger qui se déclenche a l'insertion d'une nouvelle ligne dans une table, ce trigger fait appel a une fonction java, dont je voudrais lui passer comme paramètres les données insérées dans les champs de cette nouvelle ligne,

La fonction fdelete ( supression d'un fichier ) :

create or replace FUNCTION fDelete (file IN VARCHAR2) RETURN NUMBER
AS LANGUAGE JAVA
NAME 'JDelete.delete (java.lang.String) return int';

le trigger :

create or replace TRIGGER trigJava
AFTER INSERT ON T4 REFERENCING NEW AS newRow FOR EACH ROW
BEGIN
File := 'c:\'+newRow.b;
DBMS_OUTPUT.PUT_LINE ( fdelete(File));
END trigJava;

y'a toujours une erreur a la création de ce trigger, je veux récuperér la donnée du champ b de la nouvelle ligne, en lui rajoutant 'c:\' pour constituer le fichier a supprimer par la fonction delete,

merci de m'aider a compléter ce trigger,

merci d'avance,

titexe
Configuration: Windows 2003
Firefox 2.0.0.13

4 réponses

  1. Utilisateur anonyme
     
    CREATE OR REPLACE TRIGGER trigjava
       AFTER INSERT
       ON t4
       REFERENCING NEW AS newrow
       FOR EACH ROW
    DECLARE
       FILE   VARCHAR2 (30);
    BEGIN
       FILE := 'c:\' || :newrow.b;
       DBMS_OUTPUT.put_line(FILE);
       DBMS_OUTPUT.put_line (fdelete (FILE));
    END trigjava;
    4
    1. titexe
       
      merci pour votre réactivité, c'est résolu !!

      vive CCM
      0
  2. Utilisateur anonyme
     
    De rien ;-) Passe ton post en "résolu" stp.
    1
  3. Utilisateur anonyme
     
    c'est le || la concaténation en SQL et non le +
    0
    1. titexe
       
      merci pour votre réponse,

      j'ai remplacé le + par ||, mais ca marche toujours pas !!!!
      0
  4. Utilisateur anonyme
     
    CREATE OR REPLACE TRIGGER trigjava
       AFTER INSERT
       ON t4
       REFERENCING NEW AS newrow
       FOR EACH ROW
    DECLARE
       FILE   VARCHAR2 (30);
    BEGIN
       FILE := 'c:\' + :newrow.b;
       DBMS_OUTPUT.put_line (fdelete (FILE));
    END trigjava;
    0
    1. titexe
       
      Merci pour votre réponse,

      le trigger est bien crée, mais je recois toujours une erreur a l'insertion de la table T4, une erreur d'exécution de trigger :

      INSERT INTO "TEST"."T4" (A, B) VALUES ('1', 'test')

      One error saving changes to table "TEST"."T4":
      Row 7: ORA-06502: PL/SQL : erreur numérique ou erreur sur une valeur: erreur de conversion des caractères en chiffres
      ORA-06512: à "TEST.TRIGJAVA", ligne 1
      ORA-04088: erreur lors d'exécution du déclencheur 'TEST.TRIGJAVA'
      ORA-06512: à ligne 1
      0