有耗时较长的处理逻辑,写成存储过程,直接调用的话有可能会被某些安全控制系统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;