我在一个过程中定义了一个游标
n int;
v_id varchar2(20);
cursor cur_aaa is select id from t_tb;
--在用这个游标的时候我想要在打开游标时候得到这个游标中的记录数;
begin
.......
open cur_aaa;
loop;
n := cur_aaa%rowcount; --在这里为什么得不到记录个数?
fetch cur_aaa into v_id;
n := cur_aaa%rowcount; --若打开成功,在这里为什么得到的总是'1'?而不是所有的记录条数
--记录数据条数应该很多的, 可是总是得到'1'
--%rowcount属性得到的应该是游标中的所有的记录条数
--难道%rowcount属性得到是当前fetch到的记录条数
exit when cur_aaa %notfount;
.......
end loop;
close cur_aaa;
end.是否是要用别的什么方法来得到游标中的记录数?
请指点一二,谢谢
n int;
v_id varchar2(20);
cursor cur_aaa is select id from t_tb;
--在用这个游标的时候我想要在打开游标时候得到这个游标中的记录数;
begin
.......
open cur_aaa;
loop;
n := cur_aaa%rowcount; --在这里为什么得不到记录个数?
fetch cur_aaa into v_id;
n := cur_aaa%rowcount; --若打开成功,在这里为什么得到的总是'1'?而不是所有的记录条数
--记录数据条数应该很多的, 可是总是得到'1'
--%rowcount属性得到的应该是游标中的所有的记录条数
--难道%rowcount属性得到是当前fetch到的记录条数
exit when cur_aaa %notfount;
.......
end loop;
close cur_aaa;
end.是否是要用别的什么方法来得到游标中的记录数?
请指点一二,谢谢
1.在游标中加select count(*) from tab 语句;
2.在loop中加i:=i+1;语句来实现;
execute immediate 'select * from aa ' bulk collect into v_tab;
dbms_output.put_line(v_tab.count);end;