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

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 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?
  • ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
  • ¥15 texstudio的问题,
  • ¥15 spaceclaim模型变灰色
  • ¥15 求一份华为esight平台V300R009C00SPC200这个型号的api接口文档
  • ¥15 字符串比较代码的漏洞
  • ¥15 欧拉系统opt目录空间使用100%
  • ¥15 ul做导航栏格式不对怎么改?