Chinaunix首页 | 论坛 | 博客
  • 博客访问: 143980
  • 博文数量: 161
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: -30
  • 用 户 组: 普通用户
  • 注册时间: 2017-09-21 21:45
文章分类
文章存档

2009年(1)

2008年(74)

2007年(48)

2006年(38)

我的朋友

分类: Oracle

2007-03-08 09:58:18

 
定制JOB的下次执行时间的关键是利用trunc()函数,使计算时间基于一个确定的时间点。
举几个简单的例子:
 
---------------------------------------------------------------------
--every 30mins
---------------------------------------------------------------------
declare
 v_jobno number;
begin
 dbms_job.submit(v_jobno,
   '&my_sp;',
   trunc(sysdate, 'HH24') + FLOOR(TO_NUMBER(TO_CHAR(sysdate, 'MI'))/30)/48+1/48,
    'trunc(sysdate, ''HH24'') + FLOOR(TO_NUMBER(TO_CHAR(sysdate, ''MI''))/30)/48 + 1/48'
    );
 commit;
end;
/


---------------------------------------------------------------------
--正点执行的job
---------------------------------------------------------------------
declare
 v_jobno number;
begin
 dbms_job.submit(v_jobno,
   '&my_sp;',
   trunc(sysdate, 'HH24')+1/24,
   'trunc(sysdate, ''HH24'') + 1/24');
 commit;
end;
/

---------------------------------------------------------------------
--半点执行的job
---------------------------------------------------------------------
declare
 v_jobno number;
begin
 dbms_job.submit(v_jobno,
   '&my_sp;',
   trunc(sysdate, 'HH24') + FLOOR(TO_NUMBER(TO_CHAR(sysdate, 'MI'))/30)/48+1/48,
   'trunc(sysdate, ''HH24'') + 3/48');
 commit;
end;
/
 

---------------------------------------------------------------------
--每周执行一次的job(周一早上10:00)
--trunc(sysdate, 'd')是将时间截断到本周周日(本周第一天)早上0点
---------------------------------------------------------------------
declare
 v_jobno number;
begin
 dbms_job.submit(v_jobno,
   '&my_sp;',
    trunc(sysdate, 'd') + 8 + 10/24,
    'trunc(sysdate, ''d'') + 8 + 10/24');
 commit;
end;
/

阅读(1672) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~