当前位置:  数据库>oracle

Java调用Oracle存储过程返回多条结果集

    来源: 互联网  发布时间:2017-06-23

    本文导语: Oracle版本:11g Oracle存储过程,使用游标的方式返回多行、多列数据集合: CREATE OR REPLACE PROCEDURE SP_DATA_TEST( /*P_ID  IN INT,*/ --传入参数,不需要可注释                                        O_CUR OUT SYS_REFCURSOR --输出数据,本文...

Oracle版本:11g

Oracle存储过程,使用游标的方式返回多行、多列数据集合:

CREATE OR REPLACE PROCEDURE SP_DATA_TEST( /*P_ID  IN INT,*/ --传入参数,不需要可注释
                                        O_CUR OUT SYS_REFCURSOR --输出数据,本文重点描述
                                        ) IS
BEGIN
  OPEN O_CUR FOR
    SELECT *
      FROM (SELECT 'A', SYSDATE - 1
              FROM DUAL
            UNION ALL
            SELECT 'B', SYSDATE
              FROM DUAL
            UNION ALL
            SELECT 'C', SYSDATE + 1 FROM DUAL) O
    WHERE 1 = 1;
END;

Java代码编码,程序直接调用Oracle的存储过程:SP_DATA_TEST,调用的方法:call SP_DATA_TEST(?),本文只需要输出数据,不需要输入参数,故只需要一个“?”即可,若是需要传输参数,则根据需要填写多个参数即可。本文直接使用了main方法测试,也可先自建Java Oracle连接池后使用。

package com.***.test;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

public class ProceTest {

    public static void main(String[] args) {
        try {
            DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
            Class.forName("oracle.jdbc.driver.OracleDriver");
            String url = "jdbc:oracle:thin:@10.0.0.1:1521:dbcsk";
            String username = "****";
            String password = "***";
            Connection conn = DriverManager.getConnection(url, username,
                    password);
            String sql = "{call SP_DATA_TEST(?)}";
            CallableStatement statement = conn.prepareCall(sql);
//            statement.setInt(1, 1);
           
            statement.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
            statement.execute();
           
            ResultSet rs = (ResultSet)statement.getObject(1);
            int i=1;
            while (rs.next()) {
                System.out.println(rs.getString(1)+":"+rs.getString(2));
                i++;
            }
            rs.close();
            statement.close();
            conn.close();
           
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

}

程序返回值:

A:2016-04-29 11:12:52
B:2016-03-23 11:12:52
C:2016-03-24 11:12:52


    
 
 

您可能感兴趣的文章:

  • VB编写的DLL不能被JAVA调用,用C将VB编写的DLL包装起来,做成一个新的DLL;用C编写的DLL可以被JAVA调用,用JAVA再进行一层的包装,因为JAV
  • 请问从一个java程序中如何调用另一java程序,并控制可以其状态(最小化、最大化、结束程序),还有怎样知道那个被调用的程序结束。
  • 可不可以用java调用其他语言的编译结果?(好象asp调用com那样)
  • 请问如何在Java中调用一个VB所写的DLL?如何调用这个Dll的方法?如何取得和设置这个Dll的属性值?谢谢!
  • ###java调用COM组件或COM调用java组件(EJB)解决办法。###
  • 技术文章 iis7站长之家
  • 求救!!如何在java程序中调用外部非java的exe文件?
  • 急!请问有分析java程序性能瓶颈的工具吗?例如,统计 java 程序中函数调用次数?
  • java.awt 和java.util都有List,想调用awt的List而出现Ambiguous class错误怎么办?
  • 一个.java文件中怎样来调用另一个.java文件中的变量及其它东西!
  • java调用sh脚本遇到export命令会卡住,sh不能调用子sh
  • Java能调用OLE对象吗?怎样利用Java生成Excel报表?
  • java打包后如何调用?
  • 请问Java可否调用MsSQL的存储过程,如何调用?
  • 奇怪?我在jsp中调用java类。java类本身编译没错,但jsp中的引用Tomcat总是报错。
  • java能否调用dll或ocx
  • 如何用java调用word?来者给分!·!!!!!
  • 怎么在java里调用一个oracle的procedure呢?
  • 我在APPLET里调用JAVAMAIL发邮件,出现java.security.AccessControlException: access denied (java.util.PropertyPermission * read,write)的错误???
  • 求教!!!VC应用调用Java模块可行吗?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java将类序列化并存储到mysql(使用hibernate)
  • java调用sql server存储过程,如何取存储过程返回码(不是结果集)
  • 请问各位大侠怎样在java中调用存储过程和接受存储过程的返回参数
  • 使用Statement.java里的execute执行存储过程问题
  • java调用存储过程问题。
  • 各位你们用 JAVA 做MRP软件用"存储过程"吗 ?
  • java数据存储的问题
  • 在SQL server 2000中用JAVA实现图片存储
  • 如何用java对mysql存储文件
  • java调用存储过程的错误
  • 请一下java中组数的存储结构是怎么样的??
  • Java怎么调用存储过程?给个例子吧?
  • java能否调用SQL-SERVER存储过程呢?如果能?如何调?
  • 帮我看一下程序,java调用oracle数据存储的问题?
  • 请问Java里怎样存储不定数目的数据?
  • java如何用jdbc调sybase的存储过程(用事务)
  • 哪位知道在java和c中float类型量所占四个字节的组织形式?(比如1.23是如何存储的?)
  • java中如何获取Orcale的存储过程所返回的多行结果集?+100(我食言过吗?!)
  • 有谁做过把一张图片大小成比例缩小(相应图形的存储大小也要缩小)的Java程序吗?
  • 请问存储过程若是返回结果集记录的情况下,java如何调用?
  • 关于java调用oracle存储过程的问题,谢谢!
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3