您的位置:首页 > 数据库 > Oracle

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

2016-03-21 15:48 615 查看
今天讲解讲解如何在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/fz2015@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的。

总体结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle 数据库 java 函数