指定时间执行的操作最好用作业提交,用触发器不行。
declare
  job_num number;
begin
  dbms_job.submit(job_num,
                  'proc_name'  --执行DML操作的程序名
                  sysdate,
                  'sysdate+1'  --下次执行该程序的时间,这里是一天一次
                  );
  commit;
end;
/

解决方案 »

  1.   

    法一:用DBMS_JOB进行作业提交,但有时ORACLE的安装有问题时,不能实现。
    法二:用操作系统的作业控制进行:如2000中的任务安排或NT命令,Unix中crontab或at或batch等,做一个脚本,进行控制。
      

  2.   

    I agree with KMlinda . DBMS_JOB has some bug and It's invisible to the user also and difficult to control and modify . SO it's better to use OS level batch schedular to control it.
      

  3.   

    1.用dbms_job进行控制,但oracle问题太多了,很不稳定.
    2.用操作系统做,但只要有人一改系统时间,整个数据库系统数据就乱了.
    3.我们现在采用的三方的flow软件,在数据库中建立时间表,每天运行脚本
    切换日期.同时flow软件可以控制程序流程.
      

  4.   

    使用job
    注意这两个init参数
    job_queue_processes = 4
    job_queue_interval = 10另:job其实不是各位想象的那么差劲
    所谓差劲,也许是因为没有用好的缘故假设月底那天的凌晨实现:比如8月31日凌晨add_months(trunc(sysdate,'mm'),2) - 1
    SQL> select add_months(trunc(sysdate,'mm'),2) - 1
      2  from dual;ADD_MONTHS
    ----------
    31-8月 -02SQL> 
      

  5.   

    用DBMS_JOB没错,我就用它,效果不错