`

JAVA(JDBC)调用ORACLE的存储过程、函数的返回结果集例子

    博客分类:
  • J2EE
阅读更多

/********************************************************************************


包中存储过程及函数 (database Oracle 10G)


********************************************************************************/

----包声明

CREATE OR REPLACE PACKAGE pkg_test
AS
TYPE myrctype IS REF CURSOR;
PROCEDURE proc_findResult(u_cursor OUT myrctype, u_id NUMBER);
FUNCTION fun_findResult(u_id NUMBER) return myrctype;
END pkg_test;

 

----包主体的声明

CREATE OR REPLACE PACKAGE BODY pkg_test
  AS
  PROCEDURE proc_findResult(u_cursor OUT myrctype ,u_id NUMBER)
  IS
  sqlString VARCHAR2 (500);
  BEGIN
     IF u_id = 0 THEN
        OPEN u_cursor FOR SELECT userId, userName, password, groupName FROM user_account ORDER BY userId;
     ELSE
        sqlString :='SELECT userId, userName, password, groupName FROM user_account where userId=:w_id';
        OPEN u_cursor FOR sqlString USING u_id;
     END IF;
  END proc_findResult;

  function fun_findResult(u_id NUMBER) RETURN myrctype
  IS
  u_cursor myrctype;
  sqlString VARCHAR2 (500);
  BEGIN
     IF u_id = 0 THEN
        OPEN u_cursor FOR SELECT userId, userName, password, groupName FROM user_account ORDER BY userId;
     ELSE
        sqlString :='SELECT userId, userName, password, groupName FROM user_account where userId=:w_id';
        OPEN u_cursor FOR sqlString USING u_id;
     END IF;
     return u_cursor;
   END fun_findResult;

END pkg_test;

 

 


/********************************************************************************


java 中 test class


********************************************************************************/

package org.taink.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import oracle.jdbc.OracleCallableStatement;
import oracle.jdbc.OracleTypes;

public class MyTest {
    public static void main(String args[]) throws Exception {
        DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
        Connection conn = DriverManager.getConnection(
                "jdbc:oracle:thin:@192.168.1.100:1521:TAINK", "orca", "orca");
        /**
         * call procedure
         *
         */
        OracleCallableStatement oracleCallableStatement = (OracleCallableStatement) conn
                .prepareCall("begin pkg_test.proc_findResult(?,?); end;");
        //设参数
        oracleCallableStatement.registerOutParameter(1, OracleTypes.CURSOR);
        oracleCallableStatement.setInt(2, 0);
       
        oracleCallableStatement.execute();
        //获得输出对象,因为是第一个传入的,所以使用:getObject(1);
        ResultSet resultSet = (ResultSet) oracleCallableStatement.getObject(1);
        while (resultSet.next()) {
            System.out.println(resultSet.getString("userId"));
            System.out.println(resultSet.getString("userName"));
            System.out.println(resultSet.getString("password"));
            System.out.println(resultSet.getString("groupName"));
        }
       
        /**
         * call function
         *
         */
       
//        OracleCallableStatement oracleCallableStatement = (OracleCallableStatement) conn
//        .prepareCall("{?=call pkg_test.fun_findResult(?)}");
//        //设参数
//        oracleCallableStatement.registerOutParameter(1, OracleTypes.CURSOR);
//        oracleCallableStatement.setInt(2, 0);
//       
//        oracleCallableStatement.execute();
//        //获得输出对象,因为是第一个传入的,所以使用:getObject(1);
//        ResultSet resultSet = (ResultSet) oracleCallableStatement.getCursor(1);
//        while (resultSet()) {
//            System.out.println(resultSet.getString(1));
//            System.out.println(resultSet.getString(2));
//            System.out.println(resultSet.getString(3));
//            System.out.println(resultSet.getString(4));
//        }

    }
}

 

分享到:
评论

相关推荐

    java调用oracle存储过程返回结果集,Record,cursor参照.pdf

    Java调用Oracle存储过程返回结果集Record、Cursor参照 Java调用Oracle存储过程返回结果集(Record)是指在Java程序中通过调用Oracle存储过程来获取记录集的结果。下面将详细介绍相关知识点。 创建Type 在Oracle中...

    java调用oracle存储过程或者函数

    调用Oracle函数的过程与调用存储过程类似,但创建CallableStatement时的SQL语句略有不同。由于函数会返回一个值,所以格式通常是`{? = call function_name(?, ?, ...)}`。在执行后,通过`CallableStatement....

    java中调用oracle的存储过程和函数

    ### Java中调用Oracle的存储过程和函数 在Java应用程序中调用Oracle数据库中的存储过程或函数是一项常见的任务。这不仅能够提高代码的执行效率,还可以有效地管理事务处理,确保数据的一致性和完整性。本文将详细...

    Java调用Oracle的过程和函数

    为了更好地管理和处理数据,通常需要在Java程序中调用Oracle数据库中的存储过程或函数。本文将详细介绍如何通过Java来调用Oracle数据库中的函数,并特别关注带有不同类型的输入(in)、输出(out)及输入输出(in/...

    Java调用oracle函数返回oracle类(类似)集合

    在Java中调用Oracle函数并处理返回的Oracle特定数据类型,如集合或索引表,通常涉及到Oracle的PL/SQL包和Java的JDBC驱动。以下是对这个主题的详细说明: 1. **Oracle索引表类型**: Oracle索引表是一种PL/SQL数据...

    java调用Oracle存储过程

    另外,如果存储过程返回游标(结果集),可以通过`ResultSet`接口进行处理。记得检查存储过程的返回值,它通常是一个表示成功与否的状态。 在开发过程中,可以使用诸如IntelliJ IDEA或Eclipse这样的IDE进行调试,...

    java调用oracle存储过程

    ### Java调用Oracle存储过程详解 #### 一、概述 在企业级应用开发中,数据库存储过程被广泛用于实现复杂的业务逻辑处理。由于其高效性和安全性,存储过程常常成为首选方案之一。Java作为主流的企业级开发语言之一...

    CallableStatement调用Oracle存储过程返回结果集(ResultSet).pdf

    如果存储过程返回一个结果集,例如我们需要查询某个ID对应的数据,可以创建一个返回结果集的存储过程。在Java中处理这种存储过程的步骤类似,但需要额外处理返回的结果集: 1. 调用存储过程:`cs.execute();` 2. ...

    Java调用Oracle的过程和函数.doc

    在Java编程中,调用Oracle数据库的过程和函数是常见的任务,尤其在开发企业级应用时。这个过程涉及到了Java的JDBC(Java Database Connectivity)API,它为Java应用程序提供了与各种数据库交互的能力,包括Oracle。...

    oracle 存储过程 函数 dblink

    在这段Java代码中,我们使用了`CallableStatement`来调用Oracle存储过程`TESTA`。关键点包括: - `prepareCall`方法用于准备调用存储过程。 - 使用`setString`方法设置输入参数的值。 - 调用`execute`方法执行存储...

    java调用存储过程(含out参数)

    System.out.println("存储过程返回的OUT参数值:" + outValue); cs.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 在这个例子中,`my_procedure`是存储过程名,`123`是...

    CallableStatement调用Oracle存储过程返回结果集(ResultSet).docx

    总结,CallableStatement在Java中用于调用Oracle存储过程,无论是无返回值、有返回值还是返回结果集,都可以通过设置参数、注册`OUT`参数、处理结果集来实现。在实际开发中,注意数据库连接的管理以及异常的处理,...

    java调用oracle分页存储过程

    Java调用Oracle分页存储过程是一项常见的数据库操作,尤其在处理大数据量时,为了提高查询效率和用户体验,分页查询显得尤为重要。Oracle数据库提供了一种高效的方法,即通过创建存储过程来实现分页功能,而Java作为...

    JAVA 与ORACLE 存储过程及函数

    在“JAVA与存储过程.txt”文件中,可能包含了具体的示例代码,解释了如何在Java中调用Oracle存储过程和函数,以及如何处理输入和输出参数。这些示例可能涉及到了`Connection`, `PreparedStatement`, `ResultSet`等...

    JDBC与Oracle存储过程

    JDBC调用Oracle存储过程** 调用Oracle存储过程通常使用`CallableStatement`。步骤如下: 1. **准备CallableStatement**:通过`Connection.prepareCall()`创建CallableStatement,传入调用存储过程的SQL格式字符串...

    利用游标返回结果集的的例子(Oracle 存储过程).doc

    4. 使用Java的JDBC API调用这些存储过程,处理返回的游标结果。 这种技术在需要在应用程序中分批处理大量数据或者需要动态构建查询结果时非常有用。通过游标,我们可以灵活地控制对数据库的访问,同时避免一次性...

    jdbc调用存储过程实现增删改查

    本文将深入探讨如何使用JDBC调用Oracle数据库的存储过程来实现增删改查操作。 首先,理解JDBC是Java与各种数据库交互的桥梁,它提供了一组API,允许程序员执行SQL语句并处理结果。Oracle数据库则是一种广泛使用的...

    如何调用oracle的函数、存储过程

    当你需要在应用程序中调用Oracle函数和存储过程时,通常会使用数据库驱动或ODBC/JDBC。比如在Delphi中(根据提供的文件名`*.dpr`, `*.dfm`等,可能是Delphi项目),你可以使用ADO或Oracle的OCI库。以下是一个Delphi...

Global site tag (gtag.js) - Google Analytics