1.新建一个packages,声明返回多个游标的结果集
CREATE OR REPLACE PACKAGE testxx
IS
TYPE retcursor IS REF CURSOR;
TYPE retcursor2 IS REF CURSOR;
PROCEDURE pro_read
(
outcurse OUT retcursor,
outcurse2 OUT retcursor2
);
END;
2。新建packages body
CREATE OR REPLACE PACKAGE BODY testxx IS
PROCEDURE pro_read
(
outcurse OUT retcursor,
outcurse2 OUT retcursor2
)
IS
begin
OPEN outcurse FOR
select 1,2 from dual;
OPEN outcurse2 FOR
select 2,4 from dual;
return;
end;
END;
3.java 实现代码
得到数据库连接那段就不再重复出来了
public void testPro () throws Exception {
CallableStatement cstmt=null;
Connection conn=null;
ResultSet rs = null;
ResultSet rs1 = null;
try {
conn=DBConnectionManager.getInstance().getConnection(dbName);
logger.info("---conn--------"+conn);
String sqlstr = "{call TESTXX.PRO_READ(?,?)}";
cstmt = conn.prepareCall(sqlstr);
cstmt.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR); //outcurse
cstmt.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR); //outcurse2
cstmt.execute();
rs = (ResultSet)cstmt.getObject(1);
rs1 = ((oracle.jdbc.OracleCallableStatement)cstmt).getCursor(2);
while(rs.next()){
logger.info(rs.getString("1")+"-----------"+rs.getString("2"));
}
while(rs1.next()){
logger.info(rs1.getString("2")+"-----------"+rs1.getString("4"));
}
cstmt.close();
} catch (SQLException se) {
logger.error (se.getMessage(),se);
} finally {
try {
if (rs != null){rs.close();}
if (rs1 != null){rs1.close();}
if (cstmt != null) cstmt.close();
conn.close();
} catch(SQLException see) {
logger.info("Exception occured closing stmt objects: " + see);
}
}
}
相关推荐
总结一下,Java调用Oracle存储过程并处理游标的关键步骤包括: 1. 创建Oracle存储过程,包含一个或多个OUT参数,这些参数为游标。 2. 在Java中,使用`CallableStatement`调用存储过程,注册OUT参数为`OracleTypes....
以上就是Java调用Oracle存储过程或函数的主要知识点,实践中要根据具体情况进行适当的调整和优化。在处理过程中,参考Oracle的JDBC文档和官方示例,以及Java API文档,将有助于理解和解决问题。
本篇将深入探讨如何在Oracle存储过程中创建并返回一个结果集,并结合Java代码展示如何在应用程序中使用这个结果集。 首先,我们需要理解`OUT`参数的概念。在Oracle存储过程中,`IN`参数用于传递数据到过程,`OUT`...
在Java中,我们可以使用JDBC API来调用Oracle存储过程并处理返回的Out游标。`OracleProcedure.java`文件应该包含了这样的代码。以下是一个简单的示例: ```java CallableStatement cs = connection.prepareCall("{ ...
Oracle存储过程可以返回多个结果集,因此我们需要使用`CallableStatement`而不是`PreparedStatement`。调用存储过程的语法是`{call procedure_name(参数列表)}`。例如: ```java CallableStatement cs = connection....
在Oracle数据库中,返回多个...在存储过程中定义多个游标,然后在客户端应用程序中逐个处理这些游标,可以有效地管理和利用这些结果集。记住,正确地管理游标并确保它们在使用完毕后被关闭,以避免资源泄漏和性能问题。
在Java编程中,调用Oracle数据库的存储过程是常见的任务,尤其在处理复杂业务逻辑...在实际项目中,可能需要处理更复杂的存储过程,包括带有多结果集、游标或异常处理的情况,但基本的调用模式和资源管理原则是相同的。
在Java编程中,与Oracle数据库交互是常见的任务之一,而调用Oracle存储过程可以实现复杂的业务逻辑。本文将深入探讨如何在Java中调用Oracle存储过程,并输出自定义对象或二维表,以此提升数据处理效率。 首先,我们...
在Java编程中,调用Oracle数据库的存储过程是常见的任务,尤其在处理复杂业务...此外,如果存储过程返回多个结果集或游标,可以使用`ResultSet`来处理。总的来说,理解并熟练运用这些技巧对Java开发者来说至关重要。
总结,Java调用Oracle存储过程涉及多个步骤,包括加载驱动、建立连接、准备`CallableStatement`、设置参数和执行调用。对于有返回值的过程,还需注册输出参数。分页查询则需利用Oracle特有的`ROWNUM`特性,结合游标...
如果存储过程返回一个结果集,我们可以使用游标(Cursor)来处理。在MyBatis中,可以声明一个方法,其返回类型为Map或自定义的Java Bean,代表存储过程的输出参数。在XML配置中,使用`<select>`标签并设置`...
### Java调用Oracle存储过程详解 #### 一、概述 在企业级应用开发中,数据库存储过程被广泛用于实现复杂的业务逻辑处理。Oracle作为一种流行的数据库管理系统,提供了丰富的特性支持复杂查询与事务处理。结合Java...
总的来说,Java通过JDBC API调用Oracle存储过程涉及以下几个关键步骤:建立连接、定义存储过程调用字符串、设置参数、执行存储过程和处理结果。通过熟练掌握这些步骤,你可以轻松地在Java应用中集成和利用Oracle...
当存储过程返回游标时,iBatis允许我们通过`resultMap`来映射结果集,例如: ```xml ``` 这个`resultMap`用于将查询结果映射到Java对象上,其中每个`result`元素对应结果集中的一列。 对于返回游标的...
本教程将深入探讨如何在Java中调用Oracle存储过程来执行分页查询。 首先,我们需要理解分页的基本概念。分页是将大结果集分割成多个小部分,每次只加载一部分数据到内存中,这样可以减少内存消耗,提高响应速度。在...
### Ibatis调用Oracle存储过程返回自定义类型 在企业级应用开发中,尤其是在金融、保险等业务场景中,往往需要处理复杂的数据结构与逻辑。本文将深入探讨如何使用Ibatis框架来调用Oracle数据库中的存储过程,并实现...
在iBatis中,当存储过程返回一个游标时,你可以将其映射为一个Java List。为此,你需要在Java方法中声明一个List类型的参数,而在SQL映射文件中,使用`<resultMap>`定义一个结果集映射,然后在`<selectResult>`标签...
5. **调用Oracle存储过程**:通过Java或Hibernate等工具调用Oracle存储过程,需要注意参数传递和结果集的处理。 #### 动态SQL与存储过程 在存储过程中执行动态SQL,有两种主要方式: 1. **本地动态SQL**:适用于...
例如,应将`createStatement`和`prepareStatement`方法的调用移出循环,并确保每次执行完`executeQuery`、`executeUpdate`后,如果没有进一步使用结果集,就关闭`Statement`。 Oracle数据库有几个与游标相关的初始...