declare
c sys_refcursor;
begin
--p(c) 是一个存储过程返回了多条记录
p(c);
for v in c loop
dbms_output.put_line(v.ename);
end loop;
end;
--报第5行出错,说 c 未定义
大家给看看,急啊!
c sys_refcursor;
begin
--p(c) 是一个存储过程返回了多条记录
p(c);
for v in c loop
dbms_output.put_line(v.ename);
end loop;
end;
--报第5行出错,说 c 未定义
大家给看看,急啊!
需要采用
loop
fetch .. into ...;
exit when ...;
end loop;
as
begin
open c for
select * from emp2;
end;
fetch .. into ...;
exit when ...;
end loop;
如果用这种方法我怎么知道遍历到最后一条了呢?
从 sys_refcursor 中取得结果集只能是loop 配合(c%notfound)
另外两个循环(while , for) 都不行,也不知道ORACLE为什么这么设计!!!