Я создаю задание DBMS_SCHEDULER, которое запускает хранимую процедуру.Эта процедура создает отчет на основе входных параметров, и результат сохраняется в файле, например: Job:
DBMS_SCHEDULER.CREATE_JOB(job_name => 'REPORT',
job_type => 'STORED_PROCEDURE',
job_action => 'prc_report',
number_of_arguments => 1,
start_date => Null,
repeat_interval => 'FREQ=MONTHLY;BYMONTHDAY=1;BYHOUR=1',
end_date => Null,
enabled => False,
auto_drop => False);
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(job_name => 'REPORT',
argument_position => 1,
argument_value => '25');
DBMS_SCHEDULER.enable(Name => 'REPORT');
Хранимая процедура:
Create Or Replace Procedure prc_report(v_corte In Varchar2)
(...)
If v_corte Like '%2%' Then
v_fecha_inicio := To_Char(add_months(Sysdate, -1), 'YYYYMM') || '26';
v_fecha_fin := To_Char(Sysdate, 'YYYYMM') || '25';
Else
v_fecha_inicio := To_Char(trunc(add_months(Sysdate, -1), 'MM'),
'YYYYMMDD');
v_fecha_fin := To_Char(last_day(add_months(Sysdate, -1)), 'YYYYMMDD');
End If;
Задание, которое вызываетэтот код выполняется 26-го числа каждого месяца или 1-го числа на основе аргумента v_corte
.
Однако по какой-то причине, когда мы переходим в следующий месяц, v_fecha_inicio
и v_fecha_fin
делаютне обновляется на основе текущей даты.Например, если я создам процедуру и задание 10 октября 2018 года, задание будет выполнено 26 октября 2018 года, но когда оно будет выполнено 26 ноября 2018 года, оно, похоже, все равно займет 10 октября 2018 года, то есть отчетбудет создан с датой 26 октября 2018 года.
Я не уверен, почему это происходит, это как дата, в которую он вставил дату компиляции.Процедура вызывается и выполняется без ошибок, но дата, с которой она выполняется, не обновляется при каждом выполнении.
В данных внутри отчета используются v_fecha_inicio
и v_fecha_fin
, поэтому это соответствуетошибка.
Есть какие-нибудь подсказки, в чем может быть проблема?