1、构造统计对象
create or replace type TestObj as object
(
vname varchar2(20), --名称
item1 number, --统计项目1
item2 number, --统计项目2
item3 number, --统计项目3
item4 number
)
2、构造包含对象类型的嵌套表
create or replace type TestNestTable as table of TestObj
3、定义对索引表"造型"后的输出的游标类型
create or replace package out_param is
type out_cur is ref cursor;
end out_param;
4、创建嵌套表作为输出参数的存储过程
create or replace procedure testPro2(o_cur out out_param.out_cur) is
---- 包含对象的嵌套表变量的声明
v_objTable TestNestTable := TestNestTable();
begin
--嵌套表变量的使用
v_objTable.extend;
v_objTable(1) := TestObj('张三', 12, 123, 123, 34);
v_objTable.extend;
v_objTable(2) := TestObj('李四', 22, 223, 223, 234);
--对嵌套表进行"造型"返回游标
open o_cur for
select * from Table(cast(v_objTable as TestNestTable));
end testPro2;
5、Java程序的编写
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import oracle.jdbc.OracleTypes;
public class StuInfo {
public static void main(String [] args){
Connection conn = null;
CallableStatement stmt=null;
ResultSet rest=null;
try {
//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//获取连接
conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "123456");
stmt =(CallableStatement )conn.prepareCall("call testPro2(?)");
//注册游标对象类型
stmt.registerOutParameter(1,OracleTypes.CURSOR);
stmt.execute();
//返回结果集
rest=(ResultSet)stmt.getObject(1);
while(rest.next()){
System.out.println(rest.getString(1)+"|#|"+rest.getString(2)+"|#|"+rest.getString(3)+"|#|"+rest.getString(4)+"|#|"+rest.getString(5));
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(rest!=null){ try {rest.close();rest=null;} catch (SQLException e) {e.printStackTrace();}}
if(stmt!=null){ try {stmt.close();stmt=null;} catch (SQLException e) {e.printStackTrace();}}
if(conn!=null){ try {conn.close();conn=null;} catch (SQLException e) {e.printStackTrace();}}
}
}
}
分享到:
相关推荐
本篇文章将深入探讨如何使用Java调用Oracle存储过程,并通过游标获取存储过程中返回的临时表数据。 首先,Oracle存储过程是一种在数据库端执行的预编译SQL语句和PL/SQL代码集合。它可以接收参数、执行业务逻辑并...
3. **Java调用Oracle函数**: 在Java中,你需要使用Oracle的JDBC驱动(ojdbc.jar和nls_charset12.jar)来与Oracle数据库交互。首先,你需要加载Oracle驱动并建立数据库连接。然后,你可以通过`CallableStatement`来...
在Java编程中,调用Oracle数据库的存储过程是常见的任务,尤其在处理复杂业务逻辑或高效数据操作时。本文将全面总结如何使用Java与Oracle存储过程进行交互。 首先,理解Oracle存储过程的基本概念。存储过程是预编译...
11. **Java调用存储过程和存储函数**:Java开发者可以使用JDBC(Java Database Connectivity)API来调用Oracle的存储过程和函数,实现数据库操作。CallableStatement接口用于这个目的,允许传递参数并接收返回值。 ...
总结,通过Java调用Oracle存储过程,我们需要配置JDBC驱动,建立数据库连接,创建CallableStatement,设置参数,执行存储过程,并处理返回的结果。在这个例子中,我们展示了如何调用一个简单的存储过程并打印返回的...
以上就是使用Java调用Oracle存储过程的方法,包括处理基本类型返回值和游标返回值。在实际开发中,可能还需要处理异常、事务管理等问题,确保代码的健壮性和可维护性。同时,为了提高性能,建议使用连接池管理数据库...
在Java编程中,调用Oracle数据库的存储...总之,通过Java调用Oracle存储过程,我们可以有效地执行数据库操作,同时利用存储过程带来的性能和安全优势。了解如何正确设置参数、执行和处理结果是成功实现这一目标的关键。
### Oracle集合类型输出参数的PL/SQL存储过程及其Java调用 #### 1. 引言 存储过程因其高效执行、事务处理能力以及安全性,在数据库应用程序中被广泛应用。特别是使用Oracle数据库时,PL/SQL(一种专为Oracle设计的...
Oracle集合类型输出参数的PL/SQL存储过程及Java调用主要涉及如何在Oracle数据库中使用存储过程处理集合数据,并在Java应用中调用这些过程。本文档介绍了一种使用索引表作为输出参数的方法,以及如何在Java中处理返回...
总结起来,Java调用Oracle存储过程涉及到JDBC、数据库连接管理、CallableStatement的使用以及可能的自定义类型转换。通过合理运用这些技术,开发者可以高效地在Java应用中集成和利用Oracle数据库的功能。
在Java编程中,调用Oracle数据库的...总的来说,Java调用Oracle存储过程涉及到JDBC的基本用法、CallableStatement接口、参数的设置与获取等技术。掌握这些知识,将使你在处理与Oracle数据库交互的项目中更加游刃有余。
以上就是Java调用Oracle带参数存储过程并处理返回集合的基本流程。注意在实际开发中,我们还需要考虑异常处理,资源关闭,以及可能的事务管理等细节。 在处理数组参数时,Oracle提供了PL/SQL TABLE类型的参数,Java...
总的来说,Java调用Oracle存储过程涉及JDBC的使用、CallableStatement对象的创建和管理,以及对存储过程参数的正确处理。理解并掌握这些知识点,将有助于你更高效地进行Java与Oracle数据库的交互。通过提供的源码...
..Oracle11集合类型输出参数的PLSQL存储过程及其Java调用.docx
..Oracle11集合类型输出参数的PLSQL存储过程及其Java调用.pdf
Java调用Oracle存储过程是数据库操作中常见的任务,特别是在企业级应用开发中。Oracle存储过程是一种在数据库中预编译的SQL和PL/SQL代码集合,可以提高性能、封装复杂逻辑,并提供更好的安全性。以下是对Java调用...
在Java应用中,调用数据库存储过程时,往往需要处理复杂的参数传递,特别是当参数为集合类型时,这一过程变得更加具有挑战性。本文将深入探讨如何在Java中有效地调用存储过程,并向其传递集合参数,主要聚焦于Oracle...
在Java编程中,与Oracle数据库交互是常见的任务之一,而调用Oracle存储过程可以实现复杂的业务逻辑。本文将深入探讨如何在Java中调用Oracle存储过程,并输出自定义对象或二维表,以此提升数据处理效率。 首先,我们...
本文将深入探讨如何在Java中调用Oracle存储过程。 首先,要理解Java与Oracle数据库的连接机制。Java Database Connectivity (JDBC) 是Java平台的标准接口,它允许Java应用程序连接到各种类型的数据库。对于Oracle...
总结,Java调用Oracle数据库涉及以下几个关键点: 1. 引入Oracle JDBC驱动。 2. 使用`DriverManager.getConnection()`建立连接。 3. 创建`CallableStatement`实例,设置输入参数和注册输出参数。 4. 调用`execute()`...