2012-07-30 58 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;