为间隔一个和使用创建一个名为日程包括像
编辑后的版本: 因为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;
它不工作,测试期。 27422. 00000 - “%s在嵌入式日历应用程序中不受支持\”%s \“。”%s \“” *原因:主日历定义在INCLUDE中使用嵌入式日历, EXCLUDE,INTERSECT,或FREQ条款,适用于其他限制 。 *操作:从日历定义中删除特定的子句。 – palo173
@ palo173查看编辑答案。有用。 – Seyran