`

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));
//        }

    }
}

 

分享到:
评论

相关推荐

    Oracle第3章及java调用过程函数.rar

    Java调用过程的几个步骤: 1.创建连接对象 2.得到CallableStatement对象, CallableStatement cst=conn.prepareCall("{call 过程名(?,?... )}"); //每个?代表过程中的一个参数 3.给输入参数赋值 4.注册输出参数,比如...

    groovy将JDBC中oracle存储过程游标转换为多层json

    本例是我工作中的一些实操例子,亦是我工作日志,记录在此,既可作为我自己的总结,也可以此分享给同行借鉴。 入参是字符串格式的xml,目的...3.JDBC调用存储过程语句 4.创建Groovy脚本 5.xml入参示例 6.json出参示例

    如何从 Java 存储过程将 JDBC ResultSet 作为 Ref Cursor 返回.doc

    本文档演示如何从 Java 存储过程将 JDBC ResultSet 作为 REF CURSOR 返回。JDBC ResultSet 是一个表示数据库的数据表,通常通过执行查询数据库的语句产生该表。REF CURSOR 是 PL/SQL 中相应的类型。Java 存储过程的...

    详解Hibernate呼叫Oracle的存贮过程和函数

    本示例演示Hibernate 3.2呼叫Oracle的存贮过程和函数,以及通过Hibernate的Query接口简化JDBC的开发步骤--两个步骤得到List集合。使用这种方式开发可以要求开发人员不需要太了解Hibernate框架,但是需要开发人员非常...

    JDBC连接数据库

    JDBC调用Oracle过程、函数以及取元数据的举例。有检索文件和注释及需要的jar包。需要将jar包拷到lib目录下(Myelipse)

    积分java源码-JetLiveSource:JDBC代码生成器-JavaDAO模式的实现

    积分java源码JetLiveSource JDBC 代码生成器 - 生成 Java JDBC 代码以调用 DB 记录、表、过程和函数。 Java数据访问对象的实现——DAO/Adapter模式 Java JDBC 代码生成 表:创建与数据库记录具有 1-1 关系的 Java ...

    jdbc连接数据库的方式2

     在调用存储过程时,我们可以使用SQL92或Oracle PL/SQL,由于使用Oracle PL/SQL并没有什么实际的好处,而且会给以后维护你的应用程序的开发人员带来麻烦,因此,我建议在调用存储过程时使用SQL92。  9、使用Object...

    web JDBC数据库开发接口

    JDBC的结构; SQL指令操作数据库以及常用的SQL函数的使用; JDBC访问数据库的四种基本形式、事务处理; 分页显示以及如何利用JavaBean操作数据库; 访问Oracle数据库以及操作Oracle存储过程;

    jdbc基础和参考

    execute:返回boolean类型的值,代表是否有结果集返回(如果执行select操作,是有ResultSet的,返回值为true) executeUpdate:返回int类型的值,代表的是,操作执行完成后,受影响的数据库的行计数(针对于insert,...

    Oracle 10g 网格数据库研讨会33个PPT下载

    用Java、JDBC和Web服务进行Oracle 数据库 10g程序设计 用Oracle 数据库10g构建高性能的企业XML应用系统 在亚太区,Oracle坚不可摧的Linux支持 技术-Linux 在亚太区,Oracle坚不可摧的Linux支持 技术-translated ...

    JAVA上百实例源码以及开源项目源代码

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    JAVA上百实例源码以及开源项目

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    java开源包1

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...

    java面试800题

    Q0036 如何创建oracle函数索引 "SQL>create index non_fbi on sale_contacts (surname); SQL>analyze index non_fbi compute statistics; SQL>:analyze table sale_contacts compute statistics; SQL>SELECT ...

    JAVA面试题最全集

    给定一个C语言函数,要求实现在java类中进行调用。 45.如何获得数组的长度? 46.访问修饰符“public/private/protected/缺省的修饰符”的使用 47.用关键字final修饰一个类或者方法时,有何意义? 48.掌握类和...

    java开源包4

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    java开源包11

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

Global site tag (gtag.js) - Google Analytics