chenjiexixi
2017-08-22 03:14
采纳率: 21.4%
浏览 2.3k

oracle存储过程返回游标集。。。写了半天没搞定,oracle大神帮帮我

需要查询某个表(tablename)参数,一段时间(开始日期到结束日期)的count数。
我自己想法是声明一个游标来遍历开始日期到结束日期,把每一天的count和这天的日期都装到另一个游标里(我不知道怎么写出返回游标装个对象这种)。最烦的就是有个条件需要把18点以后的数据算到第二天。也就是说如果数据时间为2017/8/22 18:00,那这条数据的时间应该是2017/8/23。所以很麻烦,拜托oracle大神帮帮我!!!
反正最后的结果是:
2017-8-19 52
2017-8-20 45
2017-8-21 56
2017-8-22 12
这个时间也不是固定的,也是参数,最好还是排下序,谢谢!!!

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

8条回答 默认 最新

  • linlin_1998 2017-08-22 07:25
    已采纳

    --申明包结构
    create or replace package atii.mypackage as
    type mycursor is ref cursor;
    procedure queryCount(startDate in date,endDate in date,countList out mycursor);
    end mypackage;

    --创建包体
    create or replace package body atii.mypackage as
    procedure queryCount(startDate in date,endDate in date,countList out mycursor)
    as
    begin
    open countList for
    select t.createDate,count(t.createDate)
    from
    (select case when createtime>=(trunc(createtime)+18/24) then trunc(createtime)+1
    else trunc(createtime) end createDate
    from t_count ) t
    where t.createDate>=to_date('2017-08-19','yyyy-MM-dd') and t.createDate<=to_date('2017-08-24','yyyy-MM-dd')
    group by t.createDate
    order by t.createDate;
    end queryCount;
    end mypackage;

    经过测试是可行的。在包结构中可以声明你要返回的游标类型呢。

    评论
    解决 无用
    打赏 举报
  • 查看更多回答(7条)

相关推荐 更多相似问题