第一步: 创建一个存储过程
1:比如创建一个存储过程名:PROC_DAYCUT_CTRL_UPDATE
plSql中执行SQL命令:
SELECT * FROM dba_Jobs a WHERE a.WHAT = 'PROC_DAYCUT_CTRL_UPDATE;';
检查是否已经存在这个存储过程,如果没有存在,则可以创建这个名
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;
/
创建名为:PROC_DAYCUT_CTRL_UPDATE 的存储过程,执行想要的Sql
补充:查询存储过程的sql
select TEXT from user_source where name='PROC_DAYCUT_CTRL_UPDATE';
第二步:创建一个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
后续有很多开发填坑的文章发布,如果对你有帮助,请支持和加关注一下
http://e22a.com/h.05ApkG?cv=AAKHZXVo&sm=339944
https://shop119727980.taobao.com/?spm=0.0.0.0