我正在创建一个客房整理作业,该作业将删除早于一周的数据,因为我已编写了一个定期运行的作业。 在sql developer中,当我看到作业状态时,每次都会显示成功,但实际上,该作业仅在第一次执行或在其中执行任何编辑时才执行指定的工作。能帮我找出问题所在吗?
我的表的字段更新日期为'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;
/
我的工作每次都显示状态成功,但是仅是第一次删除行。 我希望它每次运行时都会删除较旧的数据