oracle 里面定时执行任务,比如存储过程内容等。
2014-01-03 15:01
309 查看
DECLARE
job_no_ NUMBER;
BEGIN
DBMS_JOB.SUBMIT(job_no_,
'proc_qszx_dw_sc(''040100'');', -- 一般会将 insert into 语句写到一个存储过程insert_Prod中
sysdate,
'TRUNC(sysdate)+1+2/24'); -- 2/24 每天凌晨2点
COMMIT;
END;
select
job,last_date,last_sec,next_sec,total_time,interval,what
from user_jobs
用法DEMO:
DBMS_JOB.SUBMIT(:jobno,//job号
'your_procedure;',//要执行的过程
trunc(sysdate)+1/24,//下次执行时间
'trunc(sysdate)+1/24+1'//每次间隔时间
);
删除job:dbms_job.remove(jobno);
修改要执行的操作:job:dbms_job.what(jobno,what);
修改下次执行时间:dbms_job.next_date(job,next_date);
修改间隔时间:dbms_job.interval(job,interval);
停止job:dbms.broken(job,broken,nextdate);
启动job:dbms_job.run(jobno);
附:调用语句和参数说明:
dbms_job.submit( job out binary_integer,
what in archar2,
next_date in date,
interval in varchar2,
no_parse in boolean)
其中:
● job:输出变量,是此任务在任务队列中的编号;
● what:执行的任务的名称及其输入参数;
● next_date:任务执行的时间;
● interval:任务执行的时间间隔。
DEMO示例:
declare
jobid number;
v_sql varchar2(2000);
begin
v_sql:='begin
if to_char(sysdate,''HH24:MI'')=''15:30'' then -- 15:30执行
insert into rjck.rkjl(cksj) select cksj from wzcs.ckjl;
dbms_output.put_line(''inserted success'');
end if;
commit;
exception
when others then
rollback;
dbms_output.put_line(SQLERRM);
end;
';
dbms_job.submit(jobid,v_sql,sysdate,'sysdate+1/1440');
dbms_job.run(jobid);
dbms_output.put_line('job '||to_char(jobid)||' is running');
end;
亲身实践过的demo:
begin
dbms_job.what('405','day_dw_sc_for_gsdm(''040100'');');
--dbms_job.remove('404');
/* job_no_ NUMBER;
BEGIN
DBMS_JOB.SUBMIT(job_no_,
'proc_qszx_dw_sc(''040100'');', -- 一般会将 insert into 语句写到一个存储过程insert_Prod中
sysdate,
'TRUNC(sysdate)+1+6/24'); -- 2/24 每天凌晨2点
COMMIT;*/
END;
job_no_ NUMBER;
BEGIN
DBMS_JOB.SUBMIT(job_no_,
'proc_qszx_dw_sc(''040100'');', -- 一般会将 insert into 语句写到一个存储过程insert_Prod中
sysdate,
'TRUNC(sysdate)+1+2/24'); -- 2/24 每天凌晨2点
COMMIT;
END;
select
job,last_date,last_sec,next_sec,total_time,interval,what
from user_jobs
用法DEMO:
DBMS_JOB.SUBMIT(:jobno,//job号
'your_procedure;',//要执行的过程
trunc(sysdate)+1/24,//下次执行时间
'trunc(sysdate)+1/24+1'//每次间隔时间
);
删除job:dbms_job.remove(jobno);
修改要执行的操作:job:dbms_job.what(jobno,what);
修改下次执行时间:dbms_job.next_date(job,next_date);
修改间隔时间:dbms_job.interval(job,interval);
停止job:dbms.broken(job,broken,nextdate);
启动job:dbms_job.run(jobno);
附:调用语句和参数说明:
dbms_job.submit( job out binary_integer,
what in archar2,
next_date in date,
interval in varchar2,
no_parse in boolean)
其中:
● job:输出变量,是此任务在任务队列中的编号;
● what:执行的任务的名称及其输入参数;
● next_date:任务执行的时间;
● interval:任务执行的时间间隔。
DEMO示例:
declare
jobid number;
v_sql varchar2(2000);
begin
v_sql:='begin
if to_char(sysdate,''HH24:MI'')=''15:30'' then -- 15:30执行
insert into rjck.rkjl(cksj) select cksj from wzcs.ckjl;
dbms_output.put_line(''inserted success'');
end if;
commit;
exception
when others then
rollback;
dbms_output.put_line(SQLERRM);
end;
';
dbms_job.submit(jobid,v_sql,sysdate,'sysdate+1/1440');
dbms_job.run(jobid);
dbms_output.put_line('job '||to_char(jobid)||' is running');
end;
亲身实践过的demo:
begin
dbms_job.what('405','day_dw_sc_for_gsdm(''040100'');');
--dbms_job.remove('404');
/* job_no_ NUMBER;
BEGIN
DBMS_JOB.SUBMIT(job_no_,
'proc_qszx_dw_sc(''040100'');', -- 一般会将 insert into 语句写到一个存储过程insert_Prod中
sysdate,
'TRUNC(sysdate)+1+6/24'); -- 2/24 每天凌晨2点
COMMIT;*/
END;
相关文章推荐
- oracle 里面定时执行任务,比如存储过程内容等
- ORACLE 11G在存储过程里面遍历游标, 调用job任务定时执行
- oracle创建定时任务、作业,定时执行存储过程
- oracle 里面定时执行任务设置
- oracle的一个定时执行任务(job定时执行存储过程)
- oracle定时执行存储过程的job
- Oracle定时执行存储过程
- Oracle定时执行计划任务
- oracle怎么实现每天定时执行一个计划任务
- oracle定制定时执行任务
- 在ORACLE中如何定时执行任务
- 使用oracle 的 PL/Sql 定时执行一个存储过程
- Oracle中使用定时任务调用存储过程
- oracle设置定时任务job调度执行存储过程或pl/sql代码块
- 关于oracle dbms_job 定时执行的内容。
- 使用crontab定时任务执行sh脚本实现tomcat实时监控(监控内容为当tomcat关闭时开启tomcat)
- Oracle定时执行计划任务
- oracle实现每天定时执行一个计划任务
- oracle 创建存储过程 在job 定时执行
- Oracle实现创建作业定时执行存储过程