在Oracle Scheduler中使用excluse选项进行每周计划

时间:2015-05-08 04:39:05

标签: oracle oracle11g scheduler

我们已将调度程序配置为每周在evert星期一运行,但作为一项要求,我们希望跳过此调度程序以查看特定日期的月份。就像我不想在2015年5月16日,2015年6月16日等运行这个。

BEGIN
DBMS_SCHEDULER.set_attribute( name => '"SCHEMA"."NAME"', attribute => 'repeat_interval', value => 'FREQ=WEEKLY;BYDAY=MON;BYHOUR=13;BYMINUTE=0;BYSECOND=0');
END; 
/

我已经检查过scheduler参数,并且可以看到使用EXCLUSE参数我们可以实现,但每次我尝试它给我编译错误。

有人可以帮忙。

1 个答案:

答案 0 :(得分:0)

您必须为排除日期另外定义另一个计划。如果它们之间没有真正的重复模式,则必须为每个被排除的日期定义计划。像这样:

BEGIN

    -- define a schedule for May 15th
    DBMS_SCHEDULER.CREATE_SCHEDULE (
        repeat_interval  => 'FREQ=YEARLY;BYDATE=0515',     
        comments         => 'Exclude May 15th',
        schedule_name    => '"May15th"'
    ); 

    -- define a schedule for June 16th
    DBMS_SCHEDULER.CREATE_SCHEDULE (
        repeat_interval  => 'FREQ=YEARLY;BYDATE=0616',     
        comments         => 'Exclude June 16th',
        schedule_name    => '"June16th"'
    );

    -- note the EXCLUDE in the value parameter
    DBMS_SCHEDULER.set_attribute( 
        name => '"SCHEMA"."NAME"', 
        attribute => 'repeat_interval', 
        value => 'FREQ=WEEKLY;BYDAY=MON;BYHOUR=13;BYMINUTE=0;BYSECOND=0;EXCLUDE=May15th,Jun16th;'
    );
END;