最近开发了一个定时任务,该任务是每隔一分钟执行一次存储过程,来判断某数据是否在设定时间内,如果在执行后边逻辑,但该存储过程执行时长需要5分钟左右,而用户设定的时间小于5分钟,导致第二次调用不到,所以采购异步调用存储过程。
1.创建测试表
create table TEST_JOB
(
begin_date DATE not null,
end_date DATE not null
);
2.创建测试存储过程
create or replace procedure P_TEST_JOB AS
v_beginDate date:=sysdate;
begin
DBMS_LOCK.SLEEP(10);
insert into test_job(begin_date,end_date)values(v_beginDate,sysdate);
commit;
end P_TEST_JOB;
3.创建异步调用测试存储过程
CREATE OR REPLACE PROCEDURE P_TEST_JOB_SUMIT
IS
l_job NUMBER;
BEGIN
DBMS_JOB.submit (l_job, 'P_TEST_JOB();');
DBMS_JOB.submit (l_job, 'P_TEST_JOB();');
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE ('FAIL!');
END;