ORACLE关于返回结果集的问题

要返回结果集,首先你必须有个游标,它是记录你的查询集的。而定义一个游标有好多方法:
1,你可以在包中定义。然后将游标变量作为存储过程参数的类型。

CREATE OR REPLACE PACKAGE pkg_test
AS
    TYPE myrctype IS REF CURSOR;
    PROCEDURE get (outcurse  IN OUT myrctype);
END pkg_test;
然后你就可以在package body 中写你要的存储过程了:
CREATE OR REPLACE PACKAGE BODY pkg_test IS
   PROCEDURE get
   (
       outcurse  IN OUT retcursor
   )
   IS
   begin
        OPEN outcurse FOR
         select * from tbl_test
                where rownum<6;
        return;
   end;

2,第二种方法是直接调用Oracle自带的变量 sys_cursor:

[SQL] view plain copy
CREATE OR REPLACE PROCEDURE getcity (  
  citycode     IN       VARCHAR2,  
  ref_cursor   OUT      sys_refcursor /* 这个sys_refcursor类型在SYS.STANDARD包中 */  
)  
AS  
BEGIN  
  OPEN ref_cursor FOR  
    SELECT *  
      FROM tb_city_code  
     WHERE city_code = citycode;  
END;  
在程序中调用应该就很简单了:
if(conn !=null){
    String sqlstr = "{call pkgtest.get())}";
     CallableStatement cstmt = conn.prepareCall(sqlstr);
     cstmt.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR); //outcurse
     cstmt.executeUpdate();
     ResultSet rs = (ResultSet) cstmt.getObject(1); // 这里吧信息已经读入rs结果集里面
   while (rs.next()) {
        System.out.println(rs.getString("s_date1")); //tbl_test 表里的字段名称或是结果集的列名称
     System.out.println(rs.getString("s_date2"));
      }   
         conn.close();
         conn = null;       
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值