我有一个程序可以选择性地清除系统中的作业。它使用dbms_schedule.drop_job
来执行此操作。
我希望能够在游标中循环删除每个作业。如果由于作业不存在而抛出异常,我想捕获异常并继续循环。
答案 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;