to: lialin(阿林)
 那你觉得在最后是赋了一个null还是into不做呢?

解决方案 »

  1.   

    to :
    包子
    我觉得不会是索引问题
    那么我用的是CreditLoop过程,最后一行记录会重复输出一次
    怎么解释呢?
      

  2.   

    你可以用一个多于记录个数的定值循环来操作一下就明白了
    create or replace procedure p_testa is
    v_no varchar2(5);
    cursor cur is select no from testa;
    i integer;
    begin
      open cur;
      i:=1;
      loop
       
       fetch cur into v_no;
       dbms_output.put_line(v_no);
       v_no:='aaa';
       --exit when cur%notfound; 
       i:=i+1;
       if i=5 then exit; end if;
      end loop;
    end p_testa;
    SQL> select * from testa;NO    SENDTO               MAINNO               STATUS               ISPROC COL1                 DDD
    ----- -------------------- -------------------- -------------------- ------ -------------------- --------------------------------------------------------------------------------
    11188                      104                  并行                 0                           
    11188                      104                  并行                 0                           SQL> exec p_testa;
    11188
    11188
    aaa
    aaaPL/SQL procedure successfully completed
      

  3.   

    CREATE OR REPLACE PROCEDURE AA AS
      CURSOR C_ALLSTUDENTS IS
        SELECT id 
          FROM STUDENTS 
          ORDER BY ID;
      TYPE T_STUDENTS IS TABLE OF STUDENTS.Id%TYPE
          INDEX BY BINARY_INTEGER;
      i  INTEGER := 1;
      v_students t_students;
    BEGIN
      OPEN C_ALLSTUDENTS;
      LOOP
        FETCH C_ALLSTUDENTS INTO V_STUDENTS(i);
        EXIT WHEN C_ALLSTUDENTS%NOTFOUND;  //要放在fetch之后
       dbms_output.put_line(V_STUDENTS(i));
        i := i +1;
      END LOOP;
      CLOSE C_ALLSTUDENTS;
    END AA;就象select a into b from tname where 0=1一样
    肯定回出错.