oracle 定义存储过程的时候,能不能循环定义多个游标?

就比如我要定义10个游标cursorinfo_cursor_1is...cursorinfo_cursor_2is.........cursorinfo_cursor_9... 就比如我要定义10个游标
cursor info_cursor_1 is ...
cursor info_cursor_2 is ...

......

cursor info_cursor_9 is ...

cursor info_cursor_10 is ...

要怎么定义出来?然后又用for循环使用这10个游标?
有没有游标数组的概念?
展开
 我来答
流浪云风
推荐于2017-12-15 · TA获得超过4315个赞
知道大有可为答主
回答量:1119
采纳率:69%
帮助的人:938万
展开全部
oracle没有游标数组的概念。但是你可以定义动态游标,举个例子:
declare
bm number;
zw varchar2(10);
tt number;
str varchar2(50);
type cur_type is ref cursor; --定义游标类型
cur cur_type; --定义游标变量
begin
str := 'select deptno,sum(sal) from emp group by deptno'; --查询字符串
open cur for str;
dbms_output.put_line('每个部门的工资总和:');
while cur%found loop
dbms_output.put_line(bm||' '||tt);
fetch cur into bm,tt;
end loop;

str:= 'select job,avg(sal) from emp group by job'; --查询字符串
open cur for str;
dbms_output.put_line('每个职位的工资总和:');
fetch cur into zw,tt;
while cur%found loop
dbms_output.put_line(zw||' '||tt);
fetch cur into zw,tt;
end loop;
end;

每次通过改变str的值,来改变select语句,从而改变游标。
至于循环游标就是这样:
open cur for str; --打开游标
dbms_output.put_line('每个职位的工资总和:');
fetch cur into zw,tt;
while cur%found loop -- 循环
dbms_output.put_line(zw||' '||tt);
fetch cur into zw,tt;
end loop;--循环结束
更多追问追答
追问
这个sql能不能换行? 我的sql有连接查询之类的,很长的
追答
可以啊,你可以写多个字符串,然后使用||连接。
tianhxk
2012-10-17 · TA获得超过422个赞
知道小有建树答主
回答量:342
采纳率:0%
帮助的人:281万
展开全部
for v_cur in (select sysdate as time from dual)
loop
dbms_output.put_line(v_cur.sysdate);
end loop;
即可..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0319a0e
2012-10-17 · TA获得超过2.2万个赞
知道小有建树答主
回答量:2080
采纳率:85%
帮助的人:1156万
展开全部
游标本来就是 多结果集的 ,你还用定义游标数组?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式