1. 数据定时自动删除功能的实现:
-- 存储过程,删除上个月的历史纪录
CREATE OR REPLACE PROCEDURE delruleloghisdata AS
BEGIN
DELETE FROM rulelogtext WHERE inputdate<=trunc(sysdate-30) ;
COMMIT;
END;
/
-- 定时执行:每天凌晨2点执行
DECLARE rulelog_jobid NUMBER;
BEGIN
DBMS_JOB.SUBMIT(
JOB => rulelog_jobid, /*自动生成JOB_ID*/
WHAT => 'delruleloghisdata;', /*需要执行的过程或SQL语句*/
NEXT_DATE => TRUNC(sysdate) + 1 +2 / (24) , /*初次执行时间*/
INTERVAL => 'TRUNC(sysdate) + 1 +2 / (24)'); /*执行周期*/
DBMS_JOB.run(rulelog_jobid);
COMMIT;
END;
/
其中:
●job :输出变量,是此任务在任务队列中的编号;
●what :执行的任务的名称及其输入参数;
●next_date :任务执行的时间;
●interval :任务执行的时间间隔。
其中 Interval 这个值是决定 Job 何时,被重新执行的关键;当 interval 设置为 null 时,该 job 执行结束后,就被从队列中删除。假如我们需要该 job 周期性地执行,则要用 ‘sysdate + m’ 表示。如何更好地确定执行时间的间隔需要我们掌握一个函数 TRUNC 。
●job :输出变量,是此任务在任务队列中的编号;
●what :执行的任务的名称及其输入参数;
●next_date :任务执行的时间;
●interval :任务执行的时间间隔。
其中 Interval 这个值是决定 Job 何时,被重新执行的关键;当 interval 设置为 null 时,该 job 执行结束后,就被从队列中删除。假如我们需要该 job 周期性地执行,则要用 ‘sysdate + m’ 表示。如何更好地确定执行时间的间隔需要我们掌握一个函数 TRUNC 。