指定时间执行的操作最好用作业提交,用触发器不行。
declare
job_num number;
begin
dbms_job.submit(job_num,
'proc_name' --执行DML操作的程序名
sysdate,
'sysdate+1' --下次执行该程序的时间,这里是一天一次
);
commit;
end;
/
declare
job_num number;
begin
dbms_job.submit(job_num,
'proc_name' --执行DML操作的程序名
sysdate,
'sysdate+1' --下次执行该程序的时间,这里是一天一次
);
commit;
end;
/
法二:用操作系统的作业控制进行:如2000中的任务安排或NT命令,Unix中crontab或at或batch等,做一个脚本,进行控制。
2.用操作系统做,但只要有人一改系统时间,整个数据库系统数据就乱了.
3.我们现在采用的三方的flow软件,在数据库中建立时间表,每天运行脚本
切换日期.同时flow软件可以控制程序流程.
注意这两个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>