Créer un calendrier nommé pour l'un des intervalles et l'utilisation comprennent comme
Version révisée: En raison de INCLUDE
ne supporte pas byminute, byhour
.etc je l'ai changé comme ça, ce que je fait, décrit premier emploi en tant que journalier, déclenche chaque vendredi, mais a ajouté un horodatage de début, et a pointé un temps. donc il se répète à ce moment-là chaque vendredi, et que l'inclure dans un deuxième travail.
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;
Vous pouvez tester la période de cette façon
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;
Il ne fonctionne pas. 27422. 00000 - "utilisation de% s non prise en charge dans l'application de calendrier incorporée \"% s \ "" * Cause: La définition du calendrier principal utilisait un calendrier incorporé dans INCLUDE, EXCLUDE, INTERSECT, ou la clause FREQ pour laquelle des limitations supplémentaires s'appliquent. * Action: supprime la clause spécifique de la définition du calendrier. – palo173
@ palo173 voir la réponse modifiée. Ça marche. – Seyran