请教下,为什么这个程序会什么会一直执行下去。初学游标,不怎么会用。
Declare 
 Cursor cc Is Select agg_formula From test_instn_fjx_temp1;
 ccrec cc%Rowtype;
 v_begin Number(12);
 Begin
  
    v_begin:=1;   
  Open cc;  
  Loop  
   
      Fetch cc Into ccrec;
      Exit When cc%Notfound;     
      Loop
          v_begin:=v_begin+1;
      dbms_output.put_line(v_begin);
      Exit When v_begin=12;     
      End Loop;     
   End Loop;
   Close cc;
   End;

解决方案 »

  1.   

          V_BEGIN := V_BEGIN + 1;
                DBMS_OUTPUT.PUT_LINE(V_BEGIN);
          EXIT WHEN V_BEGIN = 12;
    有问题 没有重置
      

  2.   

    Declare  
     Cursor cc Is Select agg_formula From test_instn_fjx_temp1; 
     ccrec cc%Rowtype; 
     v_begin Number(12); 
     Begin 
       
        v_begin:=1;    
      Open cc;   
      Loop   
        v_begin:=1;----------你的意思这里应该有这么一句
          Fetch cc Into ccrec; 
          Exit When cc%Notfound;      
          Loop 
              v_begin:=v_begin+1; 
          dbms_output.put_line(v_begin); 
          Exit When v_begin=12;      
          End Loop;      
       End Loop; 
       Close cc; 
       End;
    你的写法,第二条数据就开始无限loop了
      

  3.   

    Loop 
              v_begin:=v_begin+1; 
          dbms_output.put_line(v_begin); 
          Exit When v_begin=12;   
    这个只有第一次做循环时才跳出啊
    第二做v_begin=13了,会一直做下去的
    你要把这个数归0啊