作业自动提交的例子,用的是 Oracle 的老朋友——DBMS_JOB。每 24 小时跑一次,调个过程啥的方便。你只需要一段提交语句,加个SYSDATE + 1
就能定时了,语法不复杂,写完直接commit
,搞定。嗯,这种方式现在不如DBMS_SCHEDULER
灵活,但胜在轻量,老项目里还蛮常见的。
变量声明、作业提交、提交事务一整套流程给得挺清楚,适合新手摸索数据库里的定时任务。像这样:
VARIABLE jobno number;
begin
DBMS_JOB.SUBMIT(:jobno,
'act.cal(''scott'',''emp'',null,30)',
SYSDATE, 'SYSDATE + 1');
commit;
end;
/
哦对了,还有不少相关资料可以挖,像是Oracle 定时任务解析、Quartz 实现这些都挺不错,帮你拓展一下思路。如果你还在用Oracle 11g
之类的老版本,这些技巧还蛮实用的。
建议你在调试时先print jobno
看看作业号,有时候调完不执行,是权限或参数写错,查日志能省不少事。如果你刚好在接触数据库定时任务,这类例子挺值得收藏的,简单直接。