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个游标?
有没有游标数组的概念? 展开
cursor info_cursor_1 is ...
cursor info_cursor_2 is ...
......
cursor info_cursor_9 is ...
cursor info_cursor_10 is ...
要怎么定义出来?然后又用for循环使用这10个游标?
有没有游标数组的概念? 展开
展开全部
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;--循环结束
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有连接查询之类的,很长的
追答
可以啊,你可以写多个字符串,然后使用||连接。
展开全部
for v_cur in (select sysdate as time from dual)
loop
dbms_output.put_line(v_cur.sysdate);
end loop;
即可..
loop
dbms_output.put_line(v_cur.sysdate);
end loop;
即可..
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
游标本来就是 多结果集的 ,你还用定义游标数组?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询