Oracle中把Array类型作为参数传入存储过程示例

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

  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程序如下, 基本上和普通程序差不多:

以下是代码片段:

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

String strUrl = "jdbc:oracle:thin:@192.168.1.199:1521:orcl"; 
Statement stmt = null; 
ResultSet rs = null; 
Connection conn = null; try { 
Class.forName(driver); 
conn = DriverManager.getConnection(strUrl, "user", "pass"); 
CallableStatement proc = null; 
proc = conn.prepareCall("{ call test1(?) }"); //调用存储过程test1 
//不一样的地方,获得上面创建的自定义的类型,注意大小写 
ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("VARCHAR_ARRAY", 
conn); 
List list = new ArrayList(); 
list.add("a"); 
list.add("b"); 
//把list中的元素转换成自定义的类型 
ARRAY array = new ARRAY(descriptor, conn, list.toArray()); proc.setArray(1, array); proc.execute(); catch (Exception ex) { 
ex.printStackTrace(); 
} finally { 
..... 各种 close ...... 
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值