关于游标通过while遍历的问题
declare
tempsal drp.t_client.name%type;
cursor v_mycursor is select *from drp.t_client where id>tempsal;
v_currecord v_mycursor%rowtype;
begin
tempsal:=10000;
open v_mycursor;
fetch v_mycursor into v_currecord;
while
v_mycursor%found
loop
dbms_output.put_line(v_currecord.name);
fetch v_mycursor into v_currecord;
end loop;
close v_mycursor;
end;
假如我去掉红色的那句,运行的时候就会报:buffer overflow, limit of 10000bytes
不去掉运行就正常了
但是我想问的是我前面不是已经把游标取出来了吗,后面循环的时候为什么还要去取
------解决方案--------------------
while
v_mycursor%found
----------------
为什么用While 判断游标记录存在 ,
open c_job;
loop
fetch c_job into c_row;
exit when c_job%notfound;
dbms_output.put_line(c_row.empno||'-'||c_row.ename||'-'||c_row.job||'-'||c_row.sal);
end loop;
--关闭游标
close c_job;
------解决方案--------------------
红色的就可以理解为 取值啊 就是把游标里的东西 一条条放到你的变量里
不在循环里放那句的话,那就只是取了第一条的值,后面的都没取到