请教oracle sys_refcursor 问题

Sys_refcursor可以在存储过程中循环填入结果集吗,比如多个select,怎么写?如表字段为主键recordid,学生人数studentnum,注册时间regti... Sys_refcursor 可以在存储过程中循环填入结果集吗,比如多个select ,怎么写? 如表字段为 主键recordid , 学生人数studentnum , 注册时间regtime , 按注册时间形成以每天为单位的一个月的人数统计结果 , 或以每十分钟为单位的一天的统计结果 , 存储过程 ,怎么写 。 谢谢 。 展开
 我来答
qudedong28
2013-05-24 · 超过27用户采纳过TA的回答
知道答主
回答量:95
采纳率:0%
帮助的人:73.2万
展开全部
可以把多个select语句循环拼起来,最后一次性动态执行sql,将结果集放入游标中
数据量大的话,可以考虑bulk collect的方式处理结果集
追问
怎么写?
追答
没怎么看明白你要的结果集是什么形式,大体实现方式如下,希望是你要的结果
--按注册时间形成以每天为单位的一个月的人数统计结果 :
select max(注册时间) into 注册时间最大值 from tblX;
select months_add(注册时间最大值,-1) into 注册时间最大值的前一个月 from dual;
sql1:
select sum(学生人数)
from tblX
where 注册时间 between 注册时间最大值 and 注册时间最大值的前一个月
--按每十分钟为单位的一天的统计结果 :
select max(注册时间) into 注册时间最大值 from tblX;
select to_char(注册时间最大值,'yyyy-mm-dd') into 注册时间的当天日期 from dual;
sql2:
select sum(学生人数)
from tblX
where to_char(注册时间,'yyyy-mm-dd')=注册时间的当天日期;
--动态SQL拼接
sql:=sql1 || " union " || sql2;
--将多个SQL的结果集放到Sys_refcursor 中
open Sys_refcursor for 执行动态SQL;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式