今天讲解讲解如何在oracle中 即实现 PLSQL 中调用java 方法。
当这个方式实现了,就可以结合(1)中讲的方法,将matlab实现的算法写到 oracle 数据库中,利用触发器和存储过程自动运行了。。。。
对于JAVA的方法一定要是STATIC的,参数可以有,可以没有,但是PLSQL中的FUNCTION或者PROCUDRE
要和JAVA方法保持一致。
实现方法
1,创建JAVA CLASS
a)对于简单的CLASS,我们可以直接在PLSQL里定议,如下
create or replace and compile java source named “HelloWorld”
as
package com.test;
public class HelloWorld {
public static String sayHello(String name){
System.out.println(“hello::”+ name);
return “hello::”+ name;
}
}
b)第二个方法,就是可以先创建和编译好CLASS,如:
package com.test;
public class HelloWorld {
public static String sayHello(String name){
System.out.println(“hello::”+ name);
return “hello===”+ name;
}
}
然后用oracle提供的loadjava utility把CLASS上传到ORACLE SERVER上(第三方JAR包也可以这样传上去)
可以用dropjava utility把CLASS从SERVER删除
loadjava -user username/pass@ORACLE_SERVER {dir}\HelloWorld.class
如果是远程oracle服务器:
loadjava -user jwfzxt/fz@10.18.47.200:1521:ORCL -o -v -f -r C:\Users\guest116\Oracle\Test.class;
此处的.class 文件必须使用javac辨析过得:
远程oracle服务器是否必须安装jdk?不用。并且与客户端机子jdk版本一致,oracle11G必须使用jdk1.5版本的,否则出现以下错误:
正确配置jdk之后,正确显示如下:
2)创建对就的SQL FUNCTION如:
create or replace function HelloWorld(p_name in varchar2)
return varchar2
as
language java name ‘com.test.HelloWorld.sayHello(java.lang.String) return java.lang.String’;
执行成功之后,你可以能过TOAD,发现上传的CLASS在JAVA这个目录里
除了用上面的SQL创建FUNCTION外,我们也可以通过TOAD的快捷方式,如
3)通过select HelloWorld(‘java’) from dual;看看是不是成功了
PS:oracle11g 支持的jdk版本不高,eclipse中编译的时候必须用jdk1.5等版本,eclipse3.5等。oracle如果为64位的,则jdk,eclipse也都为64bit的。
总体结果如下: