【发布时间】:2012-07-28 11:56:10
【问题描述】:
我有一个程序可以选择性地从系统中清除作业。它使用dbms_schedule.drop_job 来执行此操作。
我希望能够在一个光标下循环遍历一组作业。如果因为作业不存在而引发异常,我想捕获异常并继续循环。
【问题讨论】:
我有一个程序可以选择性地从系统中清除作业。它使用dbms_schedule.drop_job 来执行此操作。
我希望能够在一个光标下循环遍历一组作业。如果因为作业不存在而引发异常,我想捕获异常并继续循环。
【问题讨论】:
没有必要这样做。为什么不使用正确的架构和作业名称将光标内部连接到 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;
【讨论】: