ORACLE中异步调用存储过程

最近开发了一个定时任务,该任务是每隔一分钟执行一次存储过程,来判断某数据是否在设定时间内,如果在执行后边逻辑,但该存储过程执行时长需要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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值