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 MATLAB动图问题
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名