Oracle中把Array类型作为参数传入存储过程并用Java对其进行调用的示例是本文我们主要要介绍的内容,接下来我们就开始介绍这一过程。

使用Oracle Database 11g Enterprise Edition Release 11.2.0.1.0. 步骤:

1. 创建自定义的类型。由于Oracle没有提供现成的array类型,这里用table类型来模拟。

CREATE OR REPLACE TYPE varchar_array is Table OF varchar2(128) 创建后,varchar_array是一个table,里面元素的类型为varchar2(128).

2. 创建一个存储过程test1. 这个过程接受一个上面创建的varchar_array类型作为输入参数. 在过程体中,通过一个循环遍历传入的array中的每一个元素, 插入到一个表tb中:

create or replace procedure test1(arr in varchar_array) is

begin

FOR i IN arr.first .. arr.last LOOP

insert into tb values(arr(i));

END LOOP;

end test1;

3. 数据库这边的基本上完事了。 Java程序如下, 基本上和普通程序差不多:

Stringdriver="oracle.jdbc.driver.OracleDriver";

StringstrUrl="jdbc:oracle:thin:@192.168.1.199:1521:orcl";

Statementstmt=null;

ResultSetrs=null;

Connectionconn=null; try {

Class.forName(driver);

conn=DriverManager.getConnection(strUrl, "user", "pass");

CallableStatementproc=null;

proc=conn.prepareCall("{ call test1(?) }"); //调用存储过程test1

//不一样的地方,获得上面创建的自定义的类型,注意大小写

ArrayDescriptordescriptor=ArrayDescriptor.createDescriptor("VARCHAR_ARRAY",

conn);

Listlist=newArrayList();

list.add("a");

list.add("b");

//把list中的元素转换成自定义的类型

ARRAYarray=newARRAY(descriptor, conn, list.toArray()); proc.setArray(1, array); proc.execute(); catch (Exception ex) {

ex.printStackTrace();

} finally {

..... 各种 close ......

}

执行该Java程序,查询表tb,程序中的元素正常插入。

以上就是Oracle中把Array类型作为参数传入存储过程,并用Java对其进行调用的示例的全部,本文我们就介绍到这里了,希望本次的介绍能够对您有所收获!

【编辑推荐】

【责任编辑:赵鹏 TEL:(010)68476606】

点赞 0

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐