2017-04-27 50 views
0

是否有可能在一個工作中創建2個不同日期和時間的重複間隔的作業? 例如每個月的凌晨2點:上午和每個下午3點的FRI。Oracle調度程序 - 重複間隔2個不同的日子和時間

repeat_interval  => 'FREQ=DAILY;BYDAY=MON; 
          byhour=02; byminute=00; bysecond=00', 

repeat_interval  => 'FREQ=DAILY;BYDAY=FRI; 
          byhour=15; byminute=00; bysecond=00', 

這些頻率,但一起在一個工作repeat_interval。

感謝

回答

1

爲間隔一個和使用創建一個名爲日程包括像

編輯後的版本: 因爲INCLUDE不支持byminute, byhour .etc我改變了它這樣的,我做了什麼,描述每天的第一份工作是在每個星期五開火,但是增加了一個開始時間戳,並指出了一段時間。所以它在每個星期五的那個時間重複,並且將其包括在第二份工作中。

declare 
    ts timestamp := to_timestamp_tz('28/04/2017 09:00:00', 
            'DD/MM/YYYY HH24:MI:SS'); 
begin 

    dbms_scheduler.create_schedule('FRIDAY_SCHED', start_date => ts, 
            repeat_interval => 'FREQ=DAILY;BYDAY=FRI;'); 
    dbms_scheduler.create_schedule('ALL_SCHED', 
            repeat_interval => 'FREQ=DAILY;BYDAY=MON; byhour=02; byminute=00; bysecond=00;INCLUDE=FRIDAY_SCHED'); 
end; 

您可以用這種方式

declare 
    start_date timestamp; 
    return_date_after timestamp; 
    next_run_date timestamp; 
begin 
    start_date := to_timestamp_tz('28/04/2017 09:00:00', 
            'DD/MM/YYYY HH24:MI:SS'); 
    return_date_after := start_date; 
    for i in 1 .. 5 loop 
     DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING('FREQ=DAILY;BYDAY=FRI;', 
               start_date, return_date_after, 
               next_run_date); 
     DBMS_OUTPUT.PUT_LINE('next_run_date: ' || next_run_date); 
     return_date_after := next_run_date; 
    end loop; 
end; 
+0

它不工作,測試期。 27422. 00000 - 「%s在嵌入式日曆應用程序中不受支持\」%s \「。」%s \「」 *原因:主日曆定義在INCLUDE中使用嵌入式日曆, EXCLUDE,INTERSECT,或FREQ條款,適用於其他限制 。 *操作:從日曆定義中刪除特定的子句。 – palo173

+0

@ palo173查看編輯答案。有用。 – Seyran

相關問題