oracle中直接调用java代码执行业务逻辑。。

好像在oracle10g之后就可以直接调用java类来执行相关的业务逻辑操作了,但是我没有具体的考证过。

只发写我的经验,给需要的童鞋们做参考,因为这方面的资料实在比较少。而且大多是英文的。

 

一,pl/sql中编写java sources:

create or replace and compile java source named calltest as

import someClass;

public class callJavaTest{

  public static String operateInsert(String name) {

try{

return "success";

}catch (Exception e){

         return "fail";

    }

}

 

二,在pl/sql中编写function:

create or replace function callTest( name varchar2) return varchar2 as

  language java name 'calltest .operateInsert(java.lang.String) return java.lang.String';

 

三,运行:

select callTest('oracle')  from dual;

 

基本上就是以上三步,但是你在运行的时候 会发生很多意想不到的错误。

根据我的经验,主要有以下几种:

1,没有将import 需要的jar包加载到oracle中。

解决办法是:

loadjava -u user/password -r -v -f -genmissing -s -grant public xxxx.jar;

2,类型不匹配:

主要是oracle的数据类型与java代码的数据类型不匹配,这个就要各位童鞋们上网收集资料,自己想办法解决了。

3,其实也是第二点,但是很变态。oracle的number数据会自动的转换为java的java.math.BigDecimal数据类型,所以你在java代码中使用int类型的时候,在function里面传入oracle的number类型是肯定会报错的。这个问题怎么解决,我一直也没有找到好的方案,有知道的麻烦告诉我一声。

还有其他的一些错误,大多都是权限的相关错误了。有帮助的SQL语句:select * from user_sys_privs;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值