|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() |
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 !!! |
|
|
00
|
|
|
#2 |
|
Futur Membre du Club
![]() |
Alors ?
Personne ne sait comment interroger un objet java à partir d'un trigger ?? Siouplé Merci |
|
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() Chef de projet en SSII Inscription : janvier 2004 Messages : 2 866 ![]() |
Sans passer par une procédure, non je ne sais pas faire.
__________________
Un problème sans solution est un problème mal posé Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP. |
|
|
00
|
|
|
#4 |
|
Futur Membre du Club
![]() |
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 |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com