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

数据库 Oracle
本文我们主要介绍了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中:

  1. create or replace procedure test1(arr in varchar_array) is  
  2. begin  
  3. FOR i IN arr.first .. arr.last LOOP  
  4. insert into tb values(arr(i));  
  5. END LOOP;  
  6. end test1; 

 

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

  1. String driver = "oracle.jdbc.driver.OracleDriver";  
  2.  
  3. String strUrl = "jdbc:oracle:thin:@192.168.1.199:1521:orcl";  
  4. Statement stmt = null;  
  5. ResultSet rs = null;  
  6. Connection conn = null; try {  
  7. Class.forName(driver);  
  8. conn = DriverManager.getConnection(strUrl, "user", "pass");  
  9. CallableStatement proc = null;  
  10. proc = conn.prepareCall("{ call test1(?) }"); //调用存储过程test1  
  11. //不一样的地方,获得上面创建的自定义的类型,注意大小写  
  12. ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("VARCHAR_ARRAY",   
  13. conn);  
  14. List list = new ArrayList();  
  15. list.add("a");  
  16. list.add("b");   
  17. //把list中的元素转换成自定义的类型  
  18. ARRAY array = new ARRAY(descriptor, conn, list.toArray()); proc.setArray(1, array); proc.execute(); catch (Exception ex) {  
  19. ex.printStackTrace();  
  20. } finally {  
  21. ..... 各种 close ......  

 

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

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

【编辑推荐】

  1. Oracle数据库GLOBAL_NAMES参数的详细研究
  2. Oracle数据库分析函数应用实例之查找状态全为1的ID
  3. Oracle 10g UNDO表空间过大导致磁盘空间不足的解决
  4. Oracle handbook系列之虚拟专用数据库VPD的使用详解
  5. Oracle 10g中UNDO数据的作用及UNDO表空间的操作详解
责任编辑:赵鹏 来源: 火魔网
相关推荐

2010-10-09 16:58:59

MYSQL存储过程

2010-04-16 12:38:37

Oracle集合类型

2011-09-01 13:09:58

SQL Server DataTable作为

2010-04-16 11:39:56

Oracle存储过程

2010-04-12 09:26:52

Oracle查询分页

2010-06-02 10:09:29

MySQL 存储过程参

2011-08-12 11:22:53

Oracle存储过程Java

2011-08-18 17:32:40

Oracle存储过程利用游标返回结果集

2011-04-11 17:28:50

oracle存储select语句

2010-04-16 10:11:20

Oracle存储过程

2010-04-07 13:12:25

Oracle存储过程

2010-10-09 17:08:15

MySQL存储过程

2010-04-15 16:54:31

Oracle存储过程

2010-05-06 14:01:12

Oracle分页存储过

2010-11-12 09:18:13

SQL Server存

2010-10-29 16:06:55

Oracle存储过程

2010-11-16 14:30:32

Oracle存储过程

2010-04-15 17:31:10

Oracle存储过程

2010-04-08 16:41:29

Oracle存储过程

2018-10-12 11:26:13

oracle存储语法
点赞
收藏

51CTO技术栈公众号