chenjiexixi 2017-08-22 03:14 采纳率: 21.4%
浏览 2328
已采纳

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条)

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制