java操作oracle的存储过程 或函数的数据主要有以下几种:无返回参数,返回单个参数,返回结果集;前两种容易使用,下面主要介绍第三种返回结果集;下面给出两种方式,分别是使用存储过程和函数的形式;
存储过程,首先为了方便建立一个自己的包,如下:
CREATE OR REPLACE PACKAGE pkg_test AS TYPE OEPSMWS_CURSOR IS REF CURSOR; PROCEDURE get_data(p_id NUMBER,p_rc OUT OEPSMWS_CURSOR); function funcGetdatas(p_id number) return OEPSMWS_CURSOR; END pkg_test;
分别定义了返回的游标,和过程及函数的定义;
CREATE OR REPLACE PACKAGE BODY pkg_test AS procedure get_datas(p_id number,o_cursor out OEPSMWS_CURSOR ) is result_sql varchar2(200); begin if p_id is null or p_id=0 then open o_cursor for select * from area; else result_sql:='select * from area where id =:v_id'; open o_cursor for result_sql using p_id; end if; end get_datas; ----- function funcGetdatas(p_id number) return o_cursor is rc OEPSMWS_CURSOR ; --定义ref cursor变量 sqlstr2 varchar2(500); begin if p_id =0 then --静态测试,直接用select语句直接返回结果 open o_cursor for SELECT ID,name,code FROM area; else --动态sql赋值,用:w_id来申明该变量从外部获得 sqlstr2 := 'select id,name,code from area where id =:w_id'; --动态测试,用sqlstr字符串返回结果,用using关键词传递参数 open o_cursor for sqlstr2 using p_id; end if; return o_cursor ; end funcGetdatas; end pkg_test;
这样就通过存储过程或函数分别获取返回结果集的游标了;下面是java调用方式:
public static void testOrclcursor(){ String driver = "oracle.jdbc.driver.OracleDriver"; String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE "; String user = ""; String pwd = ""; Connection conn = null; CallableStatement cs = null; ResultSet rs = null; try { Class.forName(driver); conn = DriverManager.getConnection(url, user, pwd); cs = conn.prepareCall("{ call pkg_test.funcGetdatas(?,?) }"); cs.setInt(1, 290); cs.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR); cs.execute(); rs = ((OracleCallableStatement) cs).getCursor(2); // 或者下一种方式 // rs=(ResultSet) cs.getObject(2); if (rs != null) { while (rs.next()) { System.out.println(rs.getString("code")); } } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } }
相关推荐
存储过程返回结果集
### Oracle Function 返回结果集 #### 知识点概述 在Oracle数据库中,有时我们需要创建一个函数来返回一个结果集(即一系列记录),而非单一值。本文档中的代码示例展示了如何定义一个返回自定义表类型的函数`Ns_...
本篇将深入探讨如何在Oracle存储过程中创建并返回一个结果集,并结合Java代码展示如何在应用程序中使用这个结果集。 首先,我们需要理解`OUT`参数的概念。在Oracle存储过程中,`IN`参数用于传递数据到过程,`OUT`...
### Oracle存储过程返回结果集详解 #### 一、概述 在Oracle数据库中,存储过程是一种重要的编程组件,它能够执行一系列SQL语句并处理复杂的业务逻辑。存储过程的一个常见应用场景是返回结果集(Record Set),这有...
总之,Oracle返回多个结果集涉及到游标的使用和PL/SQL的编程技巧。在存储过程中定义多个游标,然后在客户端应用程序中逐个处理这些游标,可以有效地管理和利用这些结果集。记住,正确地管理游标并确保它们在使用完毕...
Java调用Oracle存储过程返回结果集Record、Cursor参照 Java调用Oracle存储过程返回结果集(Record)是指在Java程序中通过调用Oracle存储过程来获取记录集的结果。下面将详细介绍相关知识点。 创建Type 在Oracle中...
Delphi 中调用 Oracle 的存储过程返回数据集是指在 Delphi 应用程序中调用 Oracle 数据库中的存储过程,并将存储过程的返回结果集显示在 Delphi 应用程序中。这种方式可以将 Oracle 数据库中的数据实时同步到 Delphi...
在C#中调用Oracle存储过程来返回数据集是一个常见的任务,这涉及到ADO.NET库的使用,特别是OracleClient组件。Oracle存储过程是数据库中的预编译SQL代码块,可以接收输入参数,执行复杂的业务逻辑,并返回结果。在C#...
Oracle数据库允许存储过程返回记录集,这在处理复杂业务逻辑时非常有用,特别是当你需要从数据库获取一组数据并在应用程序中进一步处理时。本篇将详细解释如何使用.NET框架调用Oracle存储过程来获取记录集。 首先,...
oracle存储过程中,实现成绩分段显示人数,produce中带三个传入参数:起始分数(例如0),总分(例如100),分数间隔(例如10)。一个返回参数为游标,用来返回结果集。
### CallableStatement调用Oracle存储过程返回结果集(ResultSet) #### 一、无返回值的存储过程调用 在本节中,我们通过一个具体的例子来详细介绍如何使用`CallableStatement`来调用Oracle数据库中的无返回值存储...
在Java编程中,调用Oracle数据库的存储过程并获取返回的结果集是一项常见的任务。这个例子展示了如何处理返回Record类型和Cursor类型的存储过程。Record类型在Oracle中是一种自定义的数据结构,可以用来模拟类似...
Oracle自定义函数返回一张表。主要用于生成一张等时间间隔的表数据。
64位excel连接64位11goracle执行存储过程,返回结果集。
大数据量,返回值虽然是CLOB,依然会报错; CLOB变量需要dbms_lob.createtemporary,临时表空间中,建立临时LOB。 大数据量,返回值虽然是CLOB,依然会报错; CLOB变量需要dbms_lob.createtemporary,临时表空间中,...
在Oracle数据库中,游标是一种重要的工具,用于处理和返回多行结果集。在这个例子中,我们将探讨如何通过存储过程和游标返回结果集。游标允许我们在处理数据时逐行移动,这对于需要循环访问数据库记录的情况非常有用...
在Oracle数据库中,过程(Procedure)是存储在数据库...总之,Oracle的REF CURSOR是返回过程数据集的强大工具,允许我们以灵活的方式处理结果。理解其工作原理和最佳实践对于编写高效、健壮的Oracle应用程序至关重要。
结合Oracle数据库,我们可以编写shell脚本来查询数据库中的数据,并将结果返回。这个特定的场景中,我们可能想要从Oracle数据库中检索特定的值,然后在命令行界面或者进一步处理中使用这些数据。下面将详细讲解如何...
"使用OLE-DB和ADO调用返回记录集的Oracle存储过程" 摘要:本文介绍了如何使用OLE DB和ADO调用返回记录集的Oracle存储过程。OLE DB是一个开放规范,提供了对不同类型数据的访问和操纵标准。ADO是OLE DB的消费者,...