如何实现在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的。
总体结果如下:
当这个方式实现了,就可以结合(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的。
总体结果如下:
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android之获取手机上的图片和视频缩略图thumbnails
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序