Déclencher une méthode java
je veux utiliser une methode java
mais en utilisant plsql
je m'explique:
en fait, je veux executer une methode ecrite en java qui permet d'envoyer des sms .
ceci est fait dés que l'etat d'un champs,dans ma base de données, nommé "etat_ordre" change.
les triggers permet seulement de declancher des actions seulement sur la base
C urgent
je sais pas comment faire:oops:
utilser les java stored procedures
===== Sous SQL*plus =====
Code:
1 2 3 4 5 6 7 8
|
CREATE OR REPLACE JAVA SOURCE NAMED "TestJVM" AS
public class TestJVM {
static public String Msg(String test){
return "Hello " + test;
}
}
/ |
===== Trouble shootings =====
Certaines erreurs peuvent apparaître quand on charge une classe Java:
ORA-29536: badly formed source: java.security.AccessControlException: the Permission
(java.util.PropertyPermission java.vendor read) has not been granted by dbms_java.grant_permission
to SchemaProtectionDomain(LA01|PolicyTableProxy(LA01))
Depuis Oracle 8.1.5, chaque schéma doit avoir ses propres permissions pour avoir accès aux ressources du système d'exploitation tels que les fichiers, sockets ou propriétés (voir la [[http://download-uk.oracle.com/docs/c...ocumentation]]). Ici, l'erreur signifie qu'une propriété (notament 'java.vendor') n'a pas été mise en accès lecture pour le schéma LA01@ATSD.
Le schéma SYS doit donc faire appel à la procédure ''dbms_java.grant_permission'' pour accorder cette permission.
Code:
1 2 3 4 5
|
Begin
dbms_java.grant_permission ('LA01','java.util.PropertyPermission','*','read');
end;
/ |
====== Publication de la classe Java. ======
On va créer une procédure stockée qui va mapper les paramètres d’entrées et de sortie de la méthode de la classe créée:
Code:
1 2 3 4 5
|
CREATE OR REPLACE FUNCTION testjvm(str VARCHAR2)
RETURN VARCHAR2
AS
LANGUAGE JAVA NAME 'TestJVM.Msg (java.lang.String) return java.lang.String'; |
tu peux ensuite insérer ta fonction dans du code PL/SQL