1

我有工作,使用 DBMS_JOB 创建,每天凌晨 1:00 运行

    WHAT        PROC_XYZ();
    NEXT_DATE   16-OCT-13
    NEXT_SEC    01:00:00
    INTERVAL    trunc(sysdate)+1+1/24

我想将其更改为在特定日期运行(没有模式或固定间隔),例如:2013 年 10 月 30 日、2013 年 11 月 14 日、2013 年 11 月 18 日

有没有办法可以指定作业运行的日期列表?

4

1 回答 1

2

不。

但是,您可以创建一个希望作业运行的日期列表,并在执行该过程之前检查当前日期是否是这些日期之一。该RETURN语句将在过程中执行后立即将控制权返回给调用代码。

因此,将类似这样的内容添加到过程的第一行:

if trunc(sysdate) not in (date '2013-10-30', date '2013-11-14') then
   return;
end if;

我可能会使用表格而不是日期列表,因此无需更改代码即可轻松修改。如果您每天运行该作业,那么它将立即退出所有日子,但您希望它完全运行。

值得阅读DBMS_JOB文档顶部的注释:

DBMS_JOB 包已被 DBMS_SCHEDULER 包取代。特别是,如果您正在管理作业以管理系统负载,则应考虑通过撤销用户的包执行权限来禁用 DBMS_JOB。

于 2013-10-15T17:33:58.050 回答