以提交Job的方式執行一個存儲過程

有耗時較長的處理邏輯,寫成存儲過程,直接調用的話有可能會被某些安全控制系統kill掉。
所以需要提交一個JOB,執行存儲過程。
  • 複雜邏輯寫在存儲過程中
create or replace procedure PROC_TEST() is
begin
	-- 複雜邏輯
end PROC_TEST;
  • 提交Job
declare
  job number;
BEGIN
  DBMS_JOB.SUBMIT(  
        JOB => job,
        WHAT => 'PROC_TEST;',	-- 存儲過程名
        NEXT_DATE => to_date('20-03-2020 18:23:00','dd-mm-yyyy hh24:mi:ss'), -- 開始執行時間
        INTERVAL => 'trunc(sysdate+50)' -- 下次執行時間:50天后再執行
      );
  commit;
end;
  • 查看剛剛提交的Job
select * from user_jobs;
  • 停止Job
declare
begin 
	dbms_job.broken(241,true); -- Job Id
	commit; 
end;
  • 刪除Job
declare
begin  
	dbms_job.remove(241); -- Job Id
	commit; 
end;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章