1. Запуск на параллельное выполнение нескольких объёмистых задач
2. Если в конце процедуры есть какой-то объём работы,ненужный для пользователя (удаление объёмистой
временной таблицы например), то можно его послать на немедленное выполнение в виде отдельной процедуры
и управление в форме вернётся к пользователю раньше.
3. Периодический запуск заданий.
-- постановка задачи на выполнение
-- v_job_num - переменная, в которую запишется сгенерированный номер задания
-- ubc.a - запускаемая в задаче процедура (в конце её нужно обязательно ставить COMMIT; )
-- 3-й параметр - дата старта задания (можно через SYSDATE + N ), если NULL, то сниматься с задания не будет
-- 4-й параметр - интервал запуска (в примере - через каждые 10 дней), или напр. 'next_day(trunc(sysdate),''FRIDAY'')+12'
-- т.е. каждую пятницу в полдень
-- если NULL, то после первого выполнения задание снимется полностью
DECLARE
v_job_num number;
BEGIN
dbms_job.SUBMIT(v_job_num ,'ubc.a;',to_date('01.01.2003','dd.mm.yyyy'),'sysdate +10');
DBMS_OUTPUT.PUT_LINE(v_job_num);
end;
-- немедленное разовое выполнение задания
-- 14 - присвоенный номер задания
BEGIN
dbms_job.run(14);
end;
-- удаление задания
BEGIN
dbms_job.remove(14);
end;