IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Oracle - Trigger et Code Java


Sujet :

PL/SQL Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2003
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 51
    Points : 38
    Points
    38
    Par défaut Oracle - Trigger et Code Java
    Bonjour à tous !

    Je post ici afin d'avoir une idée de comment faire interagir un trigger avec une methode en java.

    J'ai mis en place un ptit trigger tout bete genre :
    CREATE OR REPLACE TRIGGER TRIGGER_TEST
    BEFORE INSERT ON TABLE_TEST
    ...

    Et d'un autre coté j'ai fait un ptit programme en java avec une méthode :
    PUBLIC STATIC INTEGER METHOD_TEST(String A) { ... }

    Et ce que je souhaiterai c'est que le trigger appelle la méthode qui est chargé dans oracle grâce au java loader (commande : LOADJAVA -user etc...)

    Je n'ai aucun problème au niveau du code, tout fonctionne séparément le trigger comme la fonction.
    Sauf que je souhaite que le trigger aprés l'avoir appelé récupére l'entier et si la valeur est 1 alors on autorise l'insertion, sinon on la bloque.

    Merci d'avance !

    PS : Merci de ne pas me proposer d'autres solutions il faut impérativement passer par de la communication entre TRIGGER et JAVA...
    J'avais pensé que le trigger appelle une fonction stockée qui se charge d'appeler JAVA et que le trigger récupère le résultat de la fonction mais ca merde... Donc je cherche à savoir en priorité s'il est possible de faire appel au JAVA directement dans le trigger ! Merci encore !!!

  2. #2
    Nouveau membre du Club
    Inscrit en
    Février 2003
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 51
    Points : 38
    Points
    38
    Par défaut
    Alors ?

    Personne ne sait comment interroger un objet java à partir d'un trigger ??

    Siouplé

    Merci

  3. #3
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Sans passer par une procédure, non je ne sais pas faire.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Février 2003
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 51
    Points : 38
    Points
    38
    Par défaut
    Ok et en passant par la procédure ?
    Parce que j'ai bien essayé mais ca me colle des erreurs (type de données incohérents : invalid java signature) c'est pourquoi je souhaitais d'abord savoir si c'était pas possible de passer directement par le trigger...

    Maintenant si tu peux m'aider à résoudre le problème sur la proc...

    Voila le code actuel :

    TRIGGER :
    CREATE OR REPLACE TRIGGER test
    BEFORE UPDATE ON table
    FOR EACH ROW
    DECLARE
    leRes NUMBER;
    BEGIN
    leRes := USER.MONPACKAGE.maFonction(:old.A,:new.val);
    IF (leRes = 0) THEN RAISE_APPLICATION_ERROR(-20001,'No modif');
    END IF;
    END;

    PROCEDURE :
    CREATE OR REPLACE PACKAGE BODY MONPACKAGE IS
    FUNCTION maFonction (var1 IN VARCHAR2, var2 IN VARCHAR2) RETURN NUMBER as
    LANGUAGE JAVA NAME 'maClasseJava.maMethodeJava(String, String) return java.lang.Integer';
    END MONPACKAGE;

    PROGRAMME :
    maClasse {
    public static Integer maMethodeJava(String a, String b) {
    Integer i;
    ...
    return i;
    }
    }

    J'ai bien compris qu'il y a un probleme au niveau du type mais je n'arrive pas à voir où...
    Dans le trigger : leRes est un NUMBER
    Dans la procédure stockée : un NUMBER également
    Dans le programme java : un objet INTEGER
    Donc je pense qu'il y a un prob entre le java et la procédure stockée... Je ne sais plus si j'ai essayé de retourner un int mais il me semble que java doit renvoyer un objet à oracle donc un Integer et pas un int... Enfin bon si tu peux m'éclairer un peu car c'est la première fois que je fais ca et c'est super intéressant car ca peut permettre de faire encore plein de nouveaux trucs avec ce SGBD

    PS : Je suis complètement d'accord avec ta signature "Un problème sans solution est un problème mal posé"... Moi j'ai plus pour habitude de dire qu'il n'y a pas de problème mais uniquement des solutions et que tout est réalisable... Ca se rejoint

Discussions similaires

  1. Intégration du code java dans Oracle ?
    Par fred19 dans le forum Oracle
    Réponses: 1
    Dernier message: 22/04/2010, 14h00
  2. [andromda]Infos sur andromda, générateur de code JAVA
    Par ugos dans le forum EDI et Outils pour Java
    Réponses: 5
    Dernier message: 08/09/2009, 15h30
  3. Connection à oracle par un code java
    Par ledawa dans le forum JDBC
    Réponses: 6
    Dernier message: 22/07/2008, 09h07
  4. Réponses: 3
    Dernier message: 24/04/2008, 09h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo