У меня есть процедура, которую я должен выполнять каждую неделю с даты развертывания в production.It должен работать в день развертывания, а затем последующих недель до даты окончания, хранится в переменной.Как выполнить процедуру каждую неделю до даты окончания в оракуле
Мне нужно включить это на уровне процедуры, а не создавать отдельный планировщик или DBMS_JOB
Пусть дата начала 11/1/2013 (день развертывания) и дата окончания 04/30/2014 мне нужно для запуска процедуры каждую неделю один раз между этим периодом, включая дату начала.
Предположим, что прогон на 28.04.2014 и на следующей неделе выпадает в МАЙ, а затем до 30.04.2014 он должен запускаться каждый день.
справка будет принята с благодарностью.
BEGIN
FOR I IN (SELECT typename ....)-- will give 3 output
LOOP
IF typename = 'ABC' THEN
-- run THE UPDATE every week FROM start date TO END
UPDATE TEST
SET TEST.A = ....,
TEST.b = ....
WHERE TEST.c IN (....)
ELSIF typename = 'PQR'THEN
UPDATE TEST1
SET TEST.A1 = ...,
TEST.b1 = ...,
WHERE test1.c IN (....)
END LOOP;
END;
-- run THE UPDATE every week FROM start date TO END
--Note start date and end date is different for different types.
--***If the week it ran is less than end date then schedule the update every day from --that week
--eg the last day ends at 04/30/2014, ,
--the last run happened on 04/28/2014 then update should run on 4/29,4/30 also
«Мне нужно, чтобы включить это на уровне процедуры» что это значит? Почему dbms_scheduler запрещен? (он был создан, чтобы делать то, что вы хотите, планировать задания db) – tbone
У меня есть 3 блока в моей proc.with разных датах окончания, поэтому мне нужно будет создать три планировщика. Этот процесс будет вызван другой процедурой. Так что я думал реализации в процедуре, а не планировщика. –
Я часто использую планировщик. Его непонятно, какова ваша ситуация, но я сомневаюсь, что вам нужны 3 отдельных задания планировщика (возможно, цепочка, но опять же, неясно). Можете ли вы опубликовать код того, что вы пытаетесь запустить? – tbone