通过oracle,调用java类,并加载jar包到oracle中以支持java类

    根据要求,最初的单纯使用oracle发送和接收mail被抛弃(上一篇文章描述了具体实现),转而要求使用oracle调用java,并通过javamail来实现mail的相关处里。这里问题就出现了,我编写过java,我编写过pl/sql,但是,从来没听说过使用oracle来调用java。同事没有一个作过的。不过,后来察看了相关资料,才知道,这个技术还确实有。于是做如下的相关记录。

 

  我要做的第一个是把我之前编好的一个压缩功能java类和其需要的jar包文件加载到oracle中,并使其能够被成功调用。如何压缩文件,稍后处理。我们先说如何加载java类和jar包到oracle。

 

  首先,压缩功能需要的环境配置:

     1、操作系统需要拥有支持loadjava命令的jdk。

     2、加载jlha.jar包,到oracle数据库中。

     操作过程:在dos环境下,输入命令: loadjava   -r   -f   -o   -user   usscares/usscares@usscares   jlha.jar

     这个命令就是oracle加载 jlha.jar包的命令。

  编写好需要的,负责压缩的类:Directoryzip

     在其源文件头插入一行: create or replace and compile java source named directoryzip as

     并执行在数据库command window中,则导入数据库。

  既然已经成功导入类到oracle中,那么接下来就是编写函数,使得oracle能够调用此类中的代码:

create or replace function zipblob (returnBLob BLOB,inBlob BLOB,filename VARCHAR2)   return    BLOB
      as language java name
       ' jp.co.uss.cares.common.DirectoryZip.zip(oracle.sql.BLOB,oracle.sql.BLOB,java.lang.String) return oracle.sql.BLOB ' ;
/
  然后就可以编写测试程序,在oralce控制台进行测试:declare
pBlob blob; --原始数据
rBlob blob; --压缩后的数据
typrow uss_row;
begin
select d0030
into pBlob
from dewey.cysct0291
where d0020 = '300'
     ;
rBlob := empty_blob();
delete from dewey.cysct0291 where d0010 = 'tst';
insert into dewey.cysct0291 values('tst','100',rBlob,'','','','');
select d0030 into rBlob from dewey.cysct0291 where d0010 = 'tst' for update;
--rBlob := zipblob(rBLob,pBlob,'200806251906.pdf');
rBlob := zipListToBlob(rBLob,'1,2,3,4,54'||chr(13)||chr(10)||'2,2,3,4,54','200806251906.csv');
commit;
end;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值