拜托不要耍我BREAK,你开开开什么玩笑

解决方案 »

  1.   

    可以参考这个
    create or replace procedure csnd_loop is
    i number;
    j number;
    s number;
    begin
     for i in 1..50 loop
         for j in 1..50 loop
            s:=i+j;
            exit when s>10; 
            dbms_output.put_line('j is '||to_char(j));  
            end loop;
             dbms_output.put_line('i is '||to_char(i));
         end loop;
     end ;
      

  2.   

    可以结合GOTO语句和Label标签来达到目的.
    或者干脆把内层循环写成一个子存储过程.
      

  3.   

    楼上正解,你可以在程序中定义一个标签,然后goto
    如:
    begin
    ....
    <<break_point>>
    loop
    ......
    if.... then
    goto break_point;
      

  4.   

    用goto不大好,这样写
    begin
    <<outer>>
    for ....loop
    <<inter>>
    for....loop
    ...
    exit inter when ... 只退出内层循环条件
    exit outer when ... 退出外循环条件
    end loop inter
    end loop outer
    end ;
      

  5.   

    错误捕捉也可以考虑一下
    declare
       err  exception;
    begin
       for ..   loop
         begin
           for ..  loop
              if    then
                 raise err
              end if;
           end loop;
           exception
               when err then
                  null;
               when others then
                  null;
           end;
         end loop;
    end;