我发现 最外面的depart_cursor 循环执行一遍,就关掉游标了,为什么?
我还没有循环完毕,它就关掉了由标, 求解?

解决方案 »

  1.   

    for循环写错了
    for depart_cursor in all_depart  loop 
    应该是
    for all_depart in depart_cursor loop
      

  2.   

    没有呀,申明时这样的
    cursor  all_depart is
       select * from ......depart_cursor   all_depart%rowtype;for depart_cursor in  all_depart loop
    ..........
    end loop;游标变量是前面的呀!
      

  3.   

    一个问题 ,就是怎么用 for 实现 pl/sql的多重循环,给个例子.
    谢了!
      

  4.   

    Lastdrop(空杯) 你是高手呀? 昨天你还帮我解决一个问题呢?我给你分了,
    最近全在写 存簇过程,以后有什么问题多指教,先谢了!
      

  5.   

    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 --注意是个变量,不要声明
      

  6.   

    我把这个cursor 考到sql里执行,有30多条纪录,我debug时
    第一次循环可以读 depart_cursor的
    值,如 
    mydepart:=depart_cursor.orma_code;
    mydesc:=depart_cursor.orma_desc;可是当debug循环进入第二圈时,到
    mydepart:=depart_cursor.orma_code; 正常通过到 mydesc:=depart_cursor.orma_desc; 时报错,不行了!有标好像就关闭了
      

  7.   

    用 for 实现多重循环,给个例子!  for .... loop
        for ....loop
          for ... loop
          end loop;
        end loop
      end loop;
    这样的最外层的循环只能循环一次,最外层循环后一次就关闭了,不信试试
      

  8.   

    我试过了,循环没有问题。
    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;
    /
      

  9.   

    不可能,是否mydesc:=depart_cursor.orma_desc是空值.
    游标同一处不会关闭.