数据定时自动删除功能的实现

来源:互联网 发布:三星打印机软件下载 编辑:程序博客网 时间:2024/05/02 01:58

 

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周期性地执行,则要用‘sysdatem’表示。如何更好地确定执行时间的间隔需要我们掌握一个函数TRUNC