PL / SQL异常/ goto / loop

时间:2012-07-30 18:59:46

标签: oracle exception plsql

我有一个程序可以选择性地清除系统中的作业。它使用dbms_schedule.drop_job来执行此操作。

我希望能够在游标中循环删除每个作业。如果由于作业不存在而抛出异常,我想捕获异常并继续循环。

1 个答案:

答案 0 :(得分:2)

没有必要这样做。为什么不使用正确的架构和作业名称将内部光标连接到ALL_SCHEDULER_JOBS

这样你可以保证工作确实存在。如果您想要忽略错误之外的其他事情,例如更新列表,您可以轻松地在代码中执行此操作;没有必要使用流量控制的例外。

如果您真的想使用例外,那么您可以使用user defined exception。或者(不一定是个好主意)绝对抓住一切;例如:

begin
   -- some stuff
   begin
      dbms_scheduler.drop_job(job_name => 'my_job');
   exception when others then
      -- do some stuff
   end;

end;