Я создаю домашнее задание, которое удалит данные старше недели, для этого я написал задание, которое будет периодически запускаться.
В SQL-разработчике, когда я вижу статус задания, оно каждый раз показывает, что оно выполнено успешно, но в действительности задание выполняет заданную работу только в первый раз или когда я выполняю какие-либо изменения в нем. не могли бы вы помочь мне определить, что не так?
моя таблица имеет поле с обновленной датой в формате '2018-05-06', поэтому я использую его, чтобы определить, какие записи старше
BEGIN
SYS.DBMS_SCHEDULER.CREATE_JOB (
job_name => '"OWNER"."test"',
job_type => 'PLSQL_BLOCK',
job_action => 'DECLARE
CURSOR c1 is
SELECT updateddate, IDENTIFIER FROM LIMITS;
my_updateddate VARCHAR2(255 CHAR);
my_identifier VARCHAR2(255 CHAR);
templateMessage3 VARCHAR2(255 CHAR);
templateMessage4 VARCHAR2(255 CHAR);
BEGIN
FOR i IN c1 LOOP
my_updateddate:=i.updateddate;
my_identifier:=i.identifier;
templateMessage3 := replace(my_updateddate, ''-'', '''');
templateMessage4 := TO_DATE(templateMessage3, ''yyyymmdd'');
IF templateMessage4 < sysdate-7 THEN
Delete from LIMITS where identifier=my_identifier AND updateddate=my_updateddate;
END IF;
COMMIT;
END LOOP;
END;
',
number_of_arguments => 0,
start_date => TO_TIMESTAMP_TZ('2019-05-29 15:11:19 Asia/Calcutta','YYYY-MM-DD HH24.MI.SS TZR'),
repeat_interval => 'FREQ=MINUTELY;INTERVAL=3',
end_date => NULL,
job_class => '"SYS"."DEFAULT_JOB_CLASS"',
enabled => True,
auto_drop => FALSE,
comments => 'housekeeping',
credential_name => NULL,
destination_name => NULL);
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE(
name => '"OWNER".""',
attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_OFF);
SYS.DBMS_SCHEDULER.enable(
name => '"OWNER"."test"');
END;
/
Моя работа каждый раз показывает статус успешной, но удаляет строки только первый раз.
Я ожидаю, что он будет удалять старые данные каждый раз, когда он запускается