如何实现在Oracle中应用存储过程调用MatLab函数(2)

今天讲解讲解如何在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/[email protected]:1521:ORCL -o -v -f -r C:\Users\guest116\Oracle\Test.class;

此处的.class 文件必须使用javac辨析过得:

如何实现在Oracle中应用存储过程调用MatLab函数(2)_第1张图片

远程oracle服务器是否必须安装jdk?不用。并且与客户端机子jdk版本一致,oracle11G必须使用jdk1.5版本的,否则出现以下错误:
如何实现在Oracle中应用存储过程调用MatLab函数(2)_第2张图片

正确配置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的。

总体结果如下:
如何实现在Oracle中应用存储过程调用MatLab函数(2)_第3张图片

你可能感兴趣的:(java,oracle,数据库,函数)