首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 储存过程的问题
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 10:31:01 楼主
    储存过程如果:返回结果集,那么用java如何来接收???
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 10:55:521楼 得分:0
    完整例子


    JAVA + Oracle存储过程返回查询结果集
    ===========================================================
    作者: atgc(http://atgc.itpub.net)
    发表于: 2007.06.09 18:10
    分类: 技术文章
    出处: http://atgc.itpub.net/post/22412/293784
    ---------------------------------------------------------------

    SQL> desc aa
    Name Null? Type
    ----------------------------------------- -------- ----------------------------
    ID VARCHAR2(2)

    SQL> select * from aa;

    ID
    --
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    11 rows selected.

    ---------------
    建立PACKAGE
    ---------------
    create or replace package pkg_test
    as
    type pagination is ref cursor;
    procedure page_test
    (
    p_count in out pls_integer,
    p_page in out pagination,
    p_beg in pls_integer,
    p_end in pls_integer,
    p_id in varchar2
    );
    end;
    /

    create or replace package body pkg_test
    as
    procedure page_test
    (
    p_count in out pls_integer,
    p_page in out pagination,
    p_beg in pls_integer,
    p_end in pls_integer,
    p_id in varchar2
    )
    is
    sql_count varchar2(1000) := '';
    sql_page varchar2(30000) := '';
    begin
    sql_count := 'select count(*) from aa';
    sql_page := 'select id from aa where rownum <=10';
    execute immediate sql_count into p_count;
    open p_page for sql_page;
    end;
    end;
    /

    ---------
    test.java
    ---------

    import java.sql.*;
    import java.util.*;
    import oracle.jdbc.driver.*;
    import oracle.sql.*;

    public class test
    {
    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.1:1521:数据库SID","用户名","密码");
    OracleCallableStatement cstmt = (OracleCallableStatement)conn.prepareCall("begin pkg_test.page_test(?,?,?,?,?); end;");
    cstmt.registerOutParameter(1,OracleTypes.VARCHAR); //返回记录数
    cstmt.registerOutParameter(2,OracleTypes.CURSOR); //返回结果集
    cstmt.setInt(3,1); //起始记录号
    cstmt.setInt(4,10); //结束记录号
    cstmt.setString(5,"10"); //WHERE 条件
    cstmt.execute();
    ResultSet rs = (ResultSet)cstmt.getObject(2);
    while (rs.next())
    {
    System.out.println(rs.getString(1));
    }
    }
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 21:29:032楼 得分:0
    學習!學習
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved