Heim  >  Artikel  >  Datenbank  >  Oracle定时调用存储过程

Oracle定时调用存储过程

WBOY
WBOYOriginal
2016-06-07 17:06:511105Durchsuche

--创建测试表名create table job_table(run_date date);--创建存储过程create or replace procedure job_proc asbegin inser

--创建测试表名
create table job_table(run_date date);
--创建存储过程
create or replace procedure job_proc as
begin
     insert into job_table (run_date) values (sysdate);
end;

--创建job并指定一分钟执行一次
declare
       job number;
begin
     dbms_job.submit(job,'job_proc;',sysdate,'TRUNC(sysdate,''mi'')+1/(24*60)');
end;

commit;

 


--暂停任务

--select job from user_jobs
找出job的id值,,然后使用下面的放语句停止任务。

begin
dbms_job.broken(584,true);
end;

 


--重启任务

begin
dbms_job.run(584);
end;


--删除任务
delete user_jobs where job=584;
drop procedure job_proc;
drop table job_table;

 

 

创建job后。系统即会在指定时间里自动调用该存储过程。

 


关于时间间隔的相关知识:

1.TRUNC(for dates)  

TRUNC函数为指定元素而截去的日期值。  

其具体的语法格式如下:  

TRUNC(date[,fmt])  

其中:  date 一个日期值  fmt 日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去  

下面是该函数的使用情况:  

TRUNC(TO_DATE('24-Nov-1999 08:00 pm'),'dd-mon-yyyy hh:mi am')  ='24-Nov-1999 12:00:00 am'  

TRUNC(TO_DATE('24-Nov-1999 08:37 pm','dd-mon-yyyy hh:mi am'),'hh') ='24-Nov-1999 08:00:00 am'  

trunc(sysdate,'yyyy') --返回当年第一天.  

trunc(sysdate,'mm') --返回当月第一天.  

trunc(sysdate,'d') --返回当前星期的第一天.  

trunc(sysdate,'dd')--返回当前年月日

 


trunc函数后面加的数字的单位是天。  


每天凌晨0点0分:trunc(sysdate+1)

每天早上8点 trunc(sysdate+1)+1/3

每天早上8点30分 trunc(sysdate+1)+(8.5*60)/(24*60)

每天早上8点30分 trunc(sysdate+1)+8.5/24

每天早上8点30分 trunc(sysdate+1)+(8*60+30)/(24*60)

linux

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn