Как использовать Oracle dbms_scheduler для запуска процедуры каждые 5 минут, каждый день с 7:30 до 21:30? - PullRequest
0 голосов
/ 20 февраля 2019

Я использую БД oracle 12c.Я должен запланировать процедуру, которая будет выполняться каждые 5 минут каждый день с 7:30 до 21:30.Процедура выполняется каждый день с 08:00 до 20: 55

begin
dbms_scheduler.create_job(
job_name=>'JobInvioSmsVa',
job_type=>'plsql_block',
repeat_interval=> 'FREQ=DAILY;BYHOUR=8,9,10,11,12,13,14,15,16,17,18,19,20;BYMINUTE=0,5,10,15,20,25,30,35,40,45,50,55',
job_action=>'INVIO_SMS_VA;',
enabled=>true);
end;
/

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Вы можете создать три расписания:

begin

dbms_scheduler.create_job(
   job_name=>'JobInvioSmsVa',
   job_type=>'plsql_block',
   repeat_interval=> 'FREQ=DAILY;BYHOUR=8,9,10,11,12,13,14,15,16,17,18,19,20;BYMINUTE=0,5,10,15,20,25,30,35,40,45,50,55',
   job_action=>'INVIO_SMS_VA;',
   enabled=>true);

dbms_scheduler.create_job(
   job_name=>'JobInvioSmsVa_morning',
   job_type=>'plsql_block',
   repeat_interval=> 'FREQ=DAILY;BYHOUR=7;BYMINUTE=30,35,40,45,50,55',
   job_action=>'INVIO_SMS_VA;',
   enabled=>true);

dbms_scheduler.create_job(
   job_name=>'JobInvioSmsVa_evening',
   job_type=>'plsql_block',
   repeat_interval=> 'FREQ=DAILY;BYHOUR=21;BYMINUTE=0,5,10,15,20,25,30',
   job_action=>'INVIO_SMS_VA;',
   enabled=>true);

end;

/

Предложение INCLUDE нельзя использовать в сочетании с BYHOUR или BYMINUTE, поэтому вы не можете объединить их в одно расписание.

0 голосов
/ 20 февраля 2019

Вы можете просто:

  begin
    dbms_scheduler.create_job(
    job_name=>'JobInvioSmsVa',
    job_type=>'plsql_block',
    repeat_interval=> 'FREQ=DAILY;BYHOUR=7,8,9,10,11,12,13,14,15,16,17,18,19,20,21;BYMINUTE=0,5,10,15,20,25,30,35,40,45,50,55',
    job_action=>
     'begin
       if sysdate 
         between trunc(sysdate)+7.5/24 
         and trunc(sysdate)+21.5/24 
       then
         INVIO_SMS_VA;
       end if;  
     end;',
    enabled=>true);
    end;
    /
...