这是我在 user75ponic 的帮助下生成的存储过程。
CREATE OR REPLACE PROCEDURE ARCHIVE_DATA
AS
BEGIN
MERGE
INTO Schema2.table trg
USING (
SELECT
column1
, column2
, column3
FROM
Schema1.table
WHERE
col_date >= 360
)
src
ON
(
trg.column1 = src.column1
)
WHEN NOT MATCHED THEN
INSERT
(
column1
, column2
, column3
)
VALUES
(
src.column1
, src.column2
, src.column3
)
;
COMMIT;
END;
/
现在这个存储过程应该将记录从源表传输到目标表,并且它正在这样做。
我的挑战是将以下删除脚本包含到该存储过程中。目的是在移动记录后从源表中删除记录,但前提是它们存在于目标表中。
下面是删除脚本:
DELETE FROM src WHERE src.table_date <= SYSDATE - 360 AND src.table_id IN (SELECT table_id FROM trg.column);
作为参考,这是原始帖子:原帖 https://stackoverflow.com/questions/43984830/oracle-procedure-or-job-to-copy-automatically-data-from-one-schema-to-another-ba
完成插入后,您可以将以下 DELETE 语句附加到您的过程中。
DELETE FROM schema1.src_table src
WHERE src.table_id IN (SELECT trg.table_id
FROM schema2.trg_table trg
WHERE trg.table_id = src.table_id);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)