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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

根据鬼子要求,最初的单纯使用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

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

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

[SQL]view plaincopyprint?

1.create or replace function zipblob (returnBLob BLOB,inBlob BLOB,filename VA

RCHAR2) return BLOB

2. as language java name

3. ' mon.DirectoryZip.zip(oracle.sql.BLOB,oracle.sql.BLOB

,ng.String) return oracle.sql.BLOB ' ;

4./

5.

然后就可以编写测试程序,在oralce控制台进行测试:

[SQL]view plaincopyprint?

1.declare

2.pBlob blob; --原始数据

3.rBlob blob; --压缩后的数据

4.typrow uss_row;

5.begin

6.select d0030

7. into pBlob

8. from dewey.cysct0291

9. where d0020 = '300'

10. ;

11.rBlob := empty_blob();

12.delete from dewey.cysct0291 where d0010 = 'tst';

13.insert into dewey.cysct0291 values('tst','100',rBlob,'','','','');

14.select d0030 into rBlob from dewey.cysct0291 where d0010 = 'tst'

for update;

15.--rBlob := zipblob(rBLob,pBlob,'200806251906.pdf');

16.rBlob := zipListToBlob(rBLob,'1,2,3,4,54'||chr(13)||chr(10)||'2,2,3,

4,54','200806251906.csv');

mit;

18.end;

19.

相关文档
最新文档