有耗時較長的處理邏輯,寫成存儲過程,直接調用的話有可能會被某些安全控制系統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;