我的例子是将3天之前的数据插入历史表t1_HIS,当前表t1中只保留3天的数据。
CREATE OR REPLACE PROCEDURE PR_BACKUPDATA
IS
ENDTIME DATE;
--错误日志变量声明
v_ErrorCode NUMBER; -- Code for the error
v_ErrorMsg VARCHAR2(200); -- Message text for the error
v_CurrentUser VARCHAR2(8); -- Current database user
v_Information VARCHAR2(100); -- Information about the error
BEGIN
-- 判断时间,对历史表进行插入操作,对当前表进行删除数据,当前表只保留三天的数据
ENDTIME:= SYSDATE -3;
--向历史表写入运行线数据
INSERT INTO T1_HISDATA QUERY
SELECT * FROM T1 WHERE END_TIME <= ENDTIME;
--清除当前表中三天前的数据
DELETE FROM T1 WHERE END_TIME <= ENDTIME;
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
-- Assign values to the log variables, using built-in functions.
v_ErrorCode := SQLCODE;
v_ErrorMsg := SQLERRM;
v_CurrentUser := USER;
v_Information := '用户: ' || v_CurrentUser;
INSERT INTO ERROR_LOG (ERROR_CODE, ERROR_MESSAGE, ERROR_INFO, TIME)
VALUES (v_ErrorCode, v_ErrorMsg, v_Information, SYSDATE);
COMMIT;
END;
然后在用Job,每小时执行一次。
oracle自动删除数据
最新推荐文章于 2022-01-04 23:26:21 发布