2012-07-30 57 views
0

我有一个程序,应该有选择地从系统中清除作业。它使用dbms_schedule.drop_job来执行此操作。PL/SQL异常/转到/循环

我希望能够遍历游标中的一组作业,并放下每一个作业。如果由于作业不存在而抛出异常,我想捕获异常并继续循环。

回答

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;