我在 Oracle pl/SQL 上制作了这个调度程序,它每 5 年从数据库中删除旧用户。我尝试通过将时间段从 5 年更改为 1 分钟(并将开始日期更改为插入后五分钟)来测试它,它一直在运行并且除非调度程序停止,否则它不会完成工作。如何解决这个问题?我尝试在删除语句之后使用提交,但没有结果。
这是代码:
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'Delete_Idle_Users',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN
DELETE FROM Store_Member
WHERE Member_ID IN (
Select Member_ID
FROM (
select Member_ID, Max(Purchase_Date) AS Last_Purchase
From Cart
Group By Member_ID
)
WHERE Last_Purchase<(SYSDATE-(365.25*5))
);
END;',
start_date => TO_DATE('01-GEN-2021','DD-MON-YYYY'),
repeat_interval => 'FREQ=YEARLY',
enabled => TRUE,
comments => 'Deleting users that didn't buy anything in 5 years.'
);
END;