第一步: 建立一个存储过程sql
1:好比建立一个存储过程名:PROC_DAYCUT_CTRL_UPDATEspa
plSql中执行SQL命令:开发
SELECT * FROM dba_Jobs a WHERE a.WHAT = 'PROC_DAYCUT_CTRL_UPDATE;';rem
检查是否已经存在这个存储过程,若是没有存在,则能够建立这个名get
create or replace procedure PROC_DAYCUT_CTRL_UPDATE as
begin
update t_daycut_ctrl t3 set t3.prev_settle_date=TO_DATE(to_char(sysdate,'YYYY-MM-DD'),'YYYY-MM-DD');commit;
end;
/it
建立名为:PROC_DAYCUT_CTRL_UPDATE 的存储过程,执行想要的Sqldate
补充:查询存储过程的sqlselect
select TEXT from user_source where name='PROC_DAYCUT_CTRL_UPDATE';next
第二步:建立一个Job查询
plSql中执行SQL命令:
declare proc_daycut_job number;
begin
dbms_job.submit(proc_daycut_job,
'PROC_DAYCUT_CTRL_UPDATE;',
sysdate,'sysdate+1/1440');
end;
/
解释:建立了一个名字为proc_daycut_job 每分钟自动执行PROC_DAYCUT_CTRL_UPDATE存储过程的Job
第三步:运行Job
建立好的Job默认是开启的,因此没有必要启动,实在想启动的话,先关闭,再启动
先查询Job号:
SELECT * FROM dba_Jobs a WHERE a.WHAT = 'PROC_DAYCUT_CTRL_UPDATE;';
1:中止Job
begin
dbms_job.broken(249, true);
commit;
end;
/
其中 249 为查询出来的Job号
2:启动Job
begin
dbms_job.run(249);
commit;
end;
/
若是想删除Job
begin
dbms_job.remove(247);
commit;
end;
/
第四:补充知识
SELECT * FROM dba_Jobs a WHERE a.WHAT = 'PROC_DAYCUT_CTRL_UPDATE;';
查询出来字段解释:
dba_jobs中几个比较重要的字段
job: 指的是job的id号。好比上面的 41
failures:job执行的时候失败次数,若是超过了15次,那么broken列将被标为Y,之后就不会运行该job了
broken:默认为N,若是为Y,意味着再也不执行该job!
interval:执行job的间隔时间。
what:该job的实际工做。
其中:
描述 INTERVAL参数值
1:每分钟执行
Interval => TRUNC(sysdate,'mi') + 1/ (24*60)
或
Interval => sysdate+1/1440
2:天天定时执行
例如:天天的凌晨1点执行
Interval => TRUNC(sysdate) + 1 +1/ (24)
3:每周定时执行
例如:每周一凌晨1点执行
Interval => TRUNC(next_day(sysdate,'星期一'))+1/24
4:每个月定时执行
例如:每个月1日凌晨1点执行
Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24
5:每季度定时执行
例如每季度的第一天凌晨1点执行
Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24
6:每半年定时执行
例如:每一年7月1日和1月1日凌晨1点
Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24
7:每一年定时执行
例如:每一年1月1日凌晨1点执行
Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24
后续有不少开发填坑的文章发布,若是对你有帮助,请支持和加关注一下