for循环写错了 for depart_cursor in all_depart loop 应该是 for all_depart in depart_cursor loop
没有呀,申明时这样的 cursor all_depart is select * from ......depart_cursor all_depart%rowtype;for depart_cursor in all_depart loop .......... end loop;游标变量是前面的呀!
declare cursor all_depart is select * from ......begin for depart_cursor in all_depart loop --注意depart_cursor是个变量 .......... end loop;另外: for account_cursor in all_account loop statement2......... end loop; account_cursor --注意是个变量,不要声明
用 for 实现多重循环,给个例子! for .... loop for ....loop for ... loop end loop; end loop end loop; 这样的最外层的循环只能循环一次,最外层循环后一次就关闭了,不信试试
我试过了,循环没有问题。 declare cursor cur_1 is select * from temp; cursor cur_2 is select * from temp; begin for rec1 in cur_1 loop dbms_output.put_line('1 :'||rec1.a); for rec2 in cur_2 loop dbms_output.put_line('2: '||rec2.a); end loop; end loop; end; /
for depart_cursor in all_depart loop
应该是
for all_depart in depart_cursor loop
cursor all_depart is
select * from ......depart_cursor all_depart%rowtype;for depart_cursor in all_depart loop
..........
end loop;游标变量是前面的呀!
谢了!
最近全在写 存簇过程,以后有什么问题多指教,先谢了!
cursor all_depart is
select * from ......begin
for depart_cursor in all_depart loop --注意depart_cursor是个变量
..........
end loop;另外:
for account_cursor in all_account loop
statement2.........
end loop;
account_cursor --注意是个变量,不要声明
第一次循环可以读 depart_cursor的
值,如
mydepart:=depart_cursor.orma_code;
mydesc:=depart_cursor.orma_desc;可是当debug循环进入第二圈时,到
mydepart:=depart_cursor.orma_code; 正常通过到 mydesc:=depart_cursor.orma_desc; 时报错,不行了!有标好像就关闭了
for ....loop
for ... loop
end loop;
end loop
end loop;
这样的最外层的循环只能循环一次,最外层循环后一次就关闭了,不信试试
declare
cursor cur_1 is select * from temp;
cursor cur_2 is select * from temp;
begin
for rec1 in cur_1 loop
dbms_output.put_line('1 :'||rec1.a);
for rec2 in cur_2 loop
dbms_output.put_line('2: '||rec2.a);
end loop;
end loop;
end;
/
游标同一处不会关闭.