Вопрос по sql – Создание задания в Oracle с использованием DBMS_JOB

2

Я пытаюсь создать работу, которая будет выполнять определенную процедуру каждое Рождество. Вот как далеко я получил:

declare
   jobno number;
begin
   dbms_job.submit( jobno,
                   'BEGIN GiveCoins; END;',
                    to_date('12/25', 'MM/DD'),
                    'sysdate + ?');
end;
/

Однако я, похоже, не могу найти простой способ изменить интервал на годовой, и, как правило, совершенно не понимаю, как это сделать, любая помощь очень ценится.

Не можете ли вы добавить его вALL_JOBS Таблица? gdoron
@gdoron:DBMS_JOB.REMOVE Allan
@gdoron: Вы можете это сделать, если у вас есть роль sysdba, но вы не должны этого делать. Вы никогда не должны напрямую изменять системный каталог. Allan
@Allan. Спасибо за чаевые. (Теперь я понимаю, почему я получил ошибку, когда пытался сделать это давным-давно ... {два дня назад}) И как вы удаляете работу? gdoron
@gdoron: Вы не меняете его, потому что оно является частью словаря данных. По словам Oracle, «изменение или манипулирование данными в таблицах словаря данных может навсегда и пагубно повлиять на работу базы данных». Наиболее очевидным последствием будет то, что вы почти наверняка лишите весь экземпляр права на получение поддержки Oracle. Кроме того, я не знаю, что произойдет, и у меня нет особой мотивации это выяснять. Allan

Ваш Ответ

1   ответ
7

Вы хотите что-то вроде

declare
   jobno number;
begin
   dbms_job.submit( jobno,
                   'BEGIN GiveCoins; END;',
                    to_date('12/25/2012', 'MM/DD/YYYY'),
                    'add_months(trunc(sysdate),12)');
end;
/

Это будет выполнено впервые в полночь на Рождество 2012 года и каждые 12 месяцев после этого.

Похожие вопросы