declare
 cursor emp_cur is select *from emp;
 v_emp emp%rowType;
 begin
 open emp_cur;
 
 while emp_cur%notfound loop
 fetch emp_cur into v_emp;
 dbms_output.put_line(v_emp.ename); end loop;
 close emp_cur;
 end;但是用loop循环可以获得输出数据。

解决方案 »

  1.   


    declare
     cursor emp_cur is select * from emp;
     v_emp emp%rowType;
     begin
     open emp_cur;
      
     while emp_cur%notfound --while肯定要跟loop一起用的 且是控制循环体的
    loop
     fetch emp_cur into v_emp;
     dbms_output.put_line(v_emp.ename); end loop;
     close emp_cur;
     end;
      

  2.   


    还没fetch, 就用游标的emp_cur%notfound!必须先fetch,再用游标的notfound来判断
      

  3.   

    关于cursor循环,有两种方式:
    1. 使用loop, exit (不用while)
    如:
     loop
     fetch emp_cur into v_emp;
     exit when emp_cur%notfound;
     dbms_output.put_line(v_emp.ename);
     end loop;
    2. 使用while, 这时先要fetch
     fetch emp_cur into v_emp;
     while (emp_cur%found)
     loop
       dbms_output.put_line(v_emp.ename);
       fetch emp_cur into v_emp;
     end loop;