加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

plsql / cursors处理异常并返回执行流程

发布时间:2020-12-12 13:08:22 所属栏目:百科 来源:网络整理
导读:我试图执行一个游标,并希望它完成循环,即使有一些异常. 我想要做的是“捕获”所有异常,并且可能记录某些事情或什么也不做,然后返回流程.以下是代码的外观: FOR line IN my_cursor LOOP begin ifcondition then GOTO pass; else do_something exception when
我试图执行一个游标,并希望它完成循环,即使有一些异常.

我想要做的是“捕获”所有异常,并且可能记录某些事情或什么也不做,然后返回流程.以下是代码的外观:

FOR line IN my_cursor
 LOOP
 begin

    if<condition> then
      GOTO pass; 
    else     
     <<do_something>>
     exception
       when others then
        sys.dbms_output.put_line('say something');       
    end if;  

    <<pass>> null;
 end
 END LOOP;

脚本没有编译.
异常可能存在一些语法错误,但我也不太了解语义.就像我不确定你是否可以在处理异常后返回执行流程.

p.s:DB为10g,并且没有CONTINUE.因此使用GOTO.

将您想要在循环中执行的代码放在它自己的块中,然后您可以使用该块异常部分来处理循环迭代期间的任何问题.

一旦处理了该迭代的异常,就会开始下一个循环迭代

例如.:

for line in my_cursor
loop
   begin    
      <<do_something>>
   exception
      <<do_exception_processing>>        
   end;
end loop;

为了进一步说明这一点,在下面的例子中,我声明了一个异常类型的局部变量.我循环遍历数字1到10,在第二次循环迭代期间,if语句为true,处理传递给异常处理程序.处理完异常后,循环的下一次迭代开始.

begin

   for i in 1 .. 10 
   loop

      declare

         my_exception exception;

      begin

         if i = 2
         then

            -- if you need to do some processing then you would enter it
            -- here and then when you want to enter the exception section 
            -- you would add the line below 

            raise my_exception;

         end if;

      exception
         when my_exception then
            dbms_output.put_line('in exception section');

      end;

   end loop;

end;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读