请教下,为什么这个程序会什么会一直执行下去。初学游标,不怎么会用。
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;
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;
DBMS_OUTPUT.PUT_LINE(V_BEGIN);
EXIT WHEN V_BEGIN = 12;
有问题 没有重置
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了
v_begin:=v_begin+1;
dbms_output.put_line(v_begin);
Exit When v_begin=12;
这个只有第一次做循环时才跳出啊
第二做v_begin=13了,会一直做下去的
你要把这个数归0啊