PROCEDURE UP_STUDENT_GetModel
  AS
  cursor c_stu is SELECT * FROM STUDENT;
      
  stu1 STUDENT%rowtype;
  BEGIN   
    open c_stu;
    Loop
      fetch c_stu into stu1;
      dbms_output.put_line(stu1.numid||'good');
      exit when c_stu%notfound;
    end loop;
    dbms_output.put_line(c_stu%rowcount);
    close c_stu;
  END;打印结果:1good
10000good
10001good
10031good
10029good
10030good
10032good
10033good
12good
10034good
10035good
10036good
222good
222good
13  游标的行数可以看到最后一行记录被打印了两次,是怎么回事啊?

解决方案 »

  1.   

    dbms_output.put_line(stu1.numid||'good');
      exit when c_stu%notfound;
    调换下位置...
      

  2.   

     Loop
          fetch c_stu into stu1;
          exit when c_stu%notfound;
          dbms_output.put_line(stu1.numid||'good');
          
        end loop;中这样就好了
      

  3.   

     open c_stu;
        
     while c_stu%found loop
     fetch c_stu into stu1;
     end loop;
     dbms_output.put_line(c_stu%rowcount);
     close c_stu;这样的话取不到游标数据啊,c_stu%rowcount打印出来是0,
      

  4.   

    declare
    cursor c_emp is select * from emp;
    r_emp emp%rowtype;
    begin
    open c_emp;
    loop
    fetch c_emp into r_emp;
    exit when c_emp%notfound ;
    dbms_output.put_line(r_emp.ename);
    end loop;
    dbms_output.put_line(c_emp%rowcount);
    close c_emp;
    end;可以啊,没有问题的,...