Java 调用PL/SQL Returning Object Array
实现在java调用返回值是数组的存储过程方法。
1. 数组:CYJ_ARRAY
CREATE OR REPLACE TYPE CYJ_ARRAY is VARRAY(20) OF integer
2. 存储过程:getTestArray()
CREATE OR REPLACE FUNCTION getTestArray RETURN CYJ_ARRAY
AS
l_test CYJ_ARRAY :=CYJ_ARRAY();
begin
FOR i IN 1..10 LOOP
l_test.extend;
l_test(l_test.count) := i;
dbms_output.put_line(l_test(l_test.count));
END LOOP;
RETURN l_test;
END;
3. 调用存储过程的java 类
public class TestOracleReturnArray {
public static void main(String[] args) throws SQLException {
Connection conn = null;
CallableStatement cstmt = null;
ResultSet rs = null;
try {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ora","zzz","sss");
conn.setAutoCommit(false);
String procedure = "{? = call getTestArray() }";// 调用存储过程
cstmt = conn.prepareCall(procedure);
cstmt.registerOutParameter(1, OracleTypes.ARRAY,"CYJ_ARRAY"); //注:type name:区分大小,不是包中的type, 使用包中定义的type如何调用还不知道
cstmt.execute();
ARRAY array = (ARRAY)cstmt.getObject(1);
Object[] items = (Object[])array.getArray();
Object obj;
for (int i = 0; i < items.length; i++) {
obj = items[i];
System.out.println(obj);
} // for
} catch (Exception e) {
e.printStackTrace();
} finally {
//DbConnRestore.connRestore(rs, cstmt, null, conn);
}
}
}
分享到:
相关推荐
- **B、自定义函数可以在SQL语句中调用、也可以在PL/SQL块中调用**:正确,函数可以在多种上下文中调用。 - **C、自定义函数可以返回表类型**:正确,可以返回复杂数据类型。 - **D、自定义函数中的参数可以是OUT...
除了基本类型外,PL/SQL还支持复合类型,如数组(ARRAY)和记录(RECORD)。 - **数组**: 包括索引数组(INDEX BY)和表(TABLE)。 - **记录**: 可以定义包含多个字段的数据结构。 ##### 2.4.3 使用%ROWTYPE %...
### Oracle数据库PL/SQL教程知识点概览 #### 1. PL/SQL介绍 PL/SQL(Procedural Language for SQL)是Oracle数据库的一种过程化语言,它将SQL语句与传统编程语言的功能相结合,用于创建复杂的数据库应用程序。PL/...
PL/SQL有三种集合 联合数组 嵌套表 可变数组 联合数组详解: 什么是数组?数组有什么特点 数据是线性存放的,在内存中地址是连续的 可以用索引来访问 定义联合数组? 联合数组不需要定义长度,他能容纳的元素最大...
- **匿名块**:在PL/SQL中,匿名块是一段未命名的代码块,它不能被其他程序调用,常用于临时的测试和调试。声明局部变量后,可以在BEGIN和END之间编写执行语句。 ```sql declare i integer; begin -- 测试语句...
9. **记录和集合类型**:PL/SQL支持记录(ROWTYPE)和集合(ARRAY、INDEX BY TABLE)类型,它们在处理多行数据和数组操作时非常有用。 10. **游标变量和复合类型**:游标变量可以作为参数传递,复合类型则允许...
- **ASP.NET 和 Java (J2EE)**:这些Web开发框架可以调用存储在Oracle数据库中的PL/SQL程序,实现前后端分离的架构设计。 - **C#**:通过ADO.NET等技术,C#应用程序可以直接调用Oracle数据库中的PL/SQL存储过程。 #...
PL/SQL是Oracle数据库系统中的过程化语言,它结合了SQL查询和编程的特性,使得开发者可以编写复杂的数据库应用程序。在“pl-sql.zip_vectors”这个压缩包中,重点涉及的是PL/SQL基础过程、向量操作以及触发器的使用...
PL/SQL支持多种集合类型,如VARRAY(变长数组)、NESTED TABLE(嵌套表)和ASSOCIATIVE ARRAY(关联数组)。通过集合,可以在PL/SQL程序中高效地存储和处理大量数据。 #### 三、单行函数与组函数 在SQL和PL/SQL中...
3. 包含在其他应用程序中,如Java或C通过数据库接口调用。 ### 第二章 PL/SQL块结构和组成元素 #### §2.1 PL/SQL块 PL/SQL程序由一个或多个块组成,每个块都有声明部分、执行部分和异常处理部分。 #### §2.2 ...
在Java中调用Oracle函数并处理返回的Oracle特定数据类型,如集合或索引表,通常涉及到Oracle的PL/SQL包和Java的JDBC驱动。以下是对这个主题的详细说明: 1. **Oracle索引表类型**: Oracle索引表是一种PL/SQL数据...
7. **存储过程和函数**:这两种是PL/SQL的高级特性,可以封装代码并供其他程序调用。例如: ```sql CREATE OR REPLACE PROCEDURE proc_name (param1 IN NUMBER, param2 OUT VARCHAR2) AS BEGIN -- code here ...
Oracle集合类型输出参数的PL/SQL存储过程及Java调用主要涉及如何在Oracle数据库中使用存储过程处理集合数据,并在Java应用中调用这些过程。本文档介绍了一种使用索引表作为输出参数的方法,以及如何在Java中处理返回...
### PL/SQL最佳实践 #### 概述 PL/SQL是一种专门为Oracle数据库设计的过程化语言,它结合了SQL的数据操作能力和传统过程化语言的控制结构,使得开发人员能够编写复杂的应用程序并有效地与数据库交互。本文档将详细...
1. **创建JSON对象**:通过调用特定的函数,如`json_object`或`json_array`,可以创建JSON对象和数组。 2. **解析JSON**:使用`json_parser`来解析JSON字符串,并将其转换为PL/SQL变量或记录。 3. **查询和修改JSON*...
当存储过程返回自定义对象时,你需要创建一个对应的Java类来映射Oracle的PL/SQL记录类型。例如,如果你有一个名为`MY_OBJECT`的PL/SQL记录类型,你可以创建如下Java类: ```java public class MyObject { private ...
在PL/SQL中,可以定义如`USERSEQID_ARRAY`、`USERNAME_ARRAY`和`USERPWD_ARRAY`这样的自定义数组类型。这些类型可以作为输入或输出参数在存储过程中使用。 在Java中,处理这些自定义数组类型需要特殊的方法。Oracle...