oracle-DBMS_JOB使用笔记

用于提交定时任务

基础使用

1
2
3
4
5
6
7
8
9
declare job number;
begin
dbms_job.submit(
job =>job,
what=>'PROC1;PROC2;',
next_date => sysdate, -- 初次执行时间
interval =>'TRUNC(SYSDATE + 1))';--每天凌晨同步一次
commit;
end;

一些实例

1
2
3
4
DBMS_JOB.SUBMIT(JOB       => job_id,
WHAT => 'pkg_platform_data_upload_yibo.tb_cis_consult(trunc(sysdate - 1));',
NEXT_DATE => TRUNC(sysdate) + 1 +1/(24),
INTERVAL => 'TRUNC(sysdate) + 1 +1/(24)');

查询已创建的任务

1
select * form user_jobs

删除任务

1
EXEC DBMS_JOB.REMOVE(123);

使用存储过程执行示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
create or replace procedure proc_auto_exec_job as
begin
declare
job number;
BEGIN
DBMS_JOB.SUBMIT(
JOB => job, /*自动生成JOB_ID*/
WHAT => 'proc_test_job;', /*需要执行的过程或SQL语句*/
/*NEXT_DATE => sysdate, */ /*初次执行时间,立刻执行*/
/*INTERVAL => 'sysdate+3/(24*60*60)' */ /*执行周期 -每3秒钟*/
NEXT_DATE => TRUNC(SYSDATE+1)+(0*60+30)/(24*60), /*初次执行时间,12点30分*/
INTERVAL => 'TRUNC(SYSDATE+1)+(0*60+30)/(24*60)' /*每天12点30分*/
);
COMMIT;

/*dbms_job.submit(job, 'proc_test_job;', sysdate, 'trunc(sysdate,''mi'')+1/(24*60)'); /*执行周期 -每1分钟*/
commit;*/

DBMS_JOB.RUN(job);
end;
end proc_auto_exec_job;
begin proc_auto_exec_job; end;
0%
隐藏