专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

oracle中job(Oracle中job执行存储过程避免重复数据)

ins518 2024-11-15 20:08:30 技术文章 12 ℃ 0 评论

-- 创建测试表

create table A8

(

a1 VARCHAR2(500)

)

-- 创建存储过程

create or replace procedure proc_add_test as

begin

insert into a8 values (to_char(sysdate, 'yyyy-mm-dd hh:mi'));/*向测试表插入数据*/

commit;

end;

-- 创建job 定时执行

declare

job number;

BEGIN

DBMS_JOB.SUBMIT(

JOB => job, /*自动生成JOB_ID*/

WHAT => 'proc_add_test;', /*需要执行的存储过程名称或SQL语句*/

NEXT_DATE => sysdate+3/(24*60), /*初次执行时间-下一个3分钟*/

INTERVAL => 'trunc(sysdate,''mi'')+1/(24*60)' /*每隔1分钟执行一次*/

);

commit;

end;

--- 测试查看结果

select * from A8;

-- 查看当前用户job

select job, what, next_date, next_sec, sysdate, failures, broken,interval

from user_jobs a;

-- 修改job 执行时间 实际环境

-- 每月一号凌晨两点执行

begin

dbms_job.change(26 ,'proc_add_test;', sysdate,'TRUNC(LAST_DAY(SYSDATE))+1+2/24' );

commit;

end;

-------------删除JOB-----------------

begin

dbms_job.remove(26); --//41为Job 的ID值

commit;

end;

-- 停止job,原有job 保留

begin

dbms_job.BROKEN(26,true);

commit;

end;

-- 验证job暂停是否成功

select job, what, next_date, next_sec, sysdate, failures, broken,interval

from user_jobs a;

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表