Oracle存储过程调用java程序-Oracle

Oracle 21NN 4个月前 (06-27) 63次浏览 已收录 0个评论 扫描二维码

Oracle存储过程调用java程序。

一、描述:

用Java编写了一个导入Excel数据到数据库中的程序,不过,该Java程序需要在Oracle数据库中通过存储过程的调用来执行。其中,Java程序还引用了外部包poi.jar和jdbc.jar。

二、假设:

按照 https://overloving.iteye.com/blog/1589185 中的描述安装JDK和相关环境变量设置。编写的Java程序的名称为ExcelOperate.java。Oracle数据库中编写的的存储过程名称为TestProcJava。并且Java程序编译好:ExcelOperate.class。

三、步骤:

1) 在Linux系统中创建一个目录用来存放本操作需要用到的文件:

[root@dbserv ~]# mkdir /sunjava

2) 在Linux系统中将Java程序的ExcelOperate.class文件、poi.jar、ojdbc.jar放到sunjava目录下:

[root@dbserv ~]# cp /home/oracle/ExcelOperate.class /sunjava

[root@dbserv ~]# cp /home/oracle/poi.jar /sunjava

[root@dbserv ~]# cp /home/oracle/jdbc.jar /sunjava

3) 在Linux系统中配置Java相关环境变量:

用gedit 打开配置文件profile文件:

[root@dbserv ~]# gedit /etc/profile

在配置文件的最后添加(或者存在的情况下修改)如下代码:

export JAVA_HOME=/usr/java/ jdk1.6.0_32

exprot JAVA_BIN=/usr/java/ jdk1.6.0_32 /bin

export CLASSPATH=.: JAVAHOME/lib/dt.jar: JAVA_HOME/lib/tools.jar:/sunjava/poi.jar:/sunjava/jdbc.jar/:/sunjava/

export PATH= JAVAHOME/bin: PATH

export JAVA_HOME JAVA_BIN CLASSPATH PATH

说明:在CLASSPATH增加了外部包所在的位置;最好将.class文件所在的路径也添加进去。

 

4)将引用的外部包jar文件复制到Oracle 的”$ORACLE_HOME/sqlj/lib”目录中:

[root@dbserv sunjava] cp poi.jar $ORACLE_HOME/sqlj/lib

[root@dbserv sunjava] cp jdbc .jar $ORACLE_HOME/sqlj/lib

4)进入 Oracle 的”$ORACLE_HOME/sqlj/lib”目录中, 通过 loadjava命令,将调用的外部包放到Oracle数据库中:
# 10gR2
loadjava -u sys/password -r -v -f -genmissing -s -grant public demo1.jar demo2.jar
# 11g
loadjava -u sys/password -r -v -f -genmissing -s -grant public demo1.jar demo2.jar

 

[root@dbserv lib] loadjava -u apps/apps -r -v -f -genmissing -s -grant public poi.jar jdbc.jar

 

5)在Oracle数据库中:

–创建数据库中的目录(将.class文件所在的物理目录映射到数据库中的目录)
CREATE OR REPLACE DIRECTORY test_dir AS ‘/sunjava’;

– 创建数据库中的Java class (将需要调用的Java class文件 映射到数据库中的Java Class)
CREATE OR REPLACE JAVA CLASS USING BFILE(test_dir,’ExcelOperate.class’);

–检查是否创建成功
SELECT a.OBJECT_NAME, a.OBJECT_TYPE,a.status FROM user_objects a WHERE a.OBJECT_NAME LIKE ‘%ExcelOperate%’;

–创建调用Java程序的存储过程
CREATE OR REPLACE PROCEDURE test_java AS LANGUAGE JAVA
NAME ‘ExcelOperate.main(java.lang.String[])’;

–设置输出
SET SERVEROUTPUT ON SIZE 5000;
CALL DBMS_JAVA.SET_OUTPUT(5000);

–执行存储过程
EXECUTE test_java;


本文:Oracle存储过程调用java程序-Oracle 本文链接:https://www.21nn.cn/shujuku/oracle/49270.html 本站所以图片、文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如有侵权请邮件与我们联系处理。i@ki4.cn
喜欢 (0)
[1353713598@qq.com]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址