oracle存储过程调用java程序
import java.io.FileWriter;
public class Procedure2JavaTest {
public static void sendMsg(java.lang.String title, java.lang.String content)
throws Exception {
String str=title + ":" + content;
System.out.println(str);
FileWriter fr = new FileWriter("/home/kids/test.txt");
fr.write(str);
fr.close();
}
}
然后执行
#>loadjava -user kids21/kids21@kids21 -o -v -f -r Procedure2JavaTest.java
后就把这个java文件导入到oracle中,可被调用了
create or replace procedure sync2java(title in char,content in char)
as language java name
'Procedure2JavaTest.sendMsg(java.lang.String,java.lang.String)';
--说明:这个地方存储过程中的两个输入参数就是下面调用的java程序的函数的参数,后面执行的时候会传递过去,而且,被调用的java函数需要是静态方法
java.security.AccessControlException: the Permission (java.net.SocketPermission 127.0.0.1:7777 connect,resolve) has not been granted to SISTEMAS. The PL/SQL to grant this is dbms_java.grant_permission( 'apps', 'SYS:java.ne
t.SocketPermission', 127.0.0.1:7777', 'connect,resolve' )
说明没有远程调用执行的权限,需要在oracle中执行
exec dbms_java.grant_permission( 'apps',
'SYS:java.net.SocketPermission',
'127.0.0.1:7777',
'connect,resolve' )