Spróbuj użyć MERGE
, Warunek WHERE można zastąpić, aby uzyskać rekordy starsze niż 360 dni na podstawie logiki. Warunkiem ON powinny być pasujące kolumny łączenia dwóch tabel.
Jeśli kod jest w porządku, być może możesz zaplanować uruchamianie co tydzień.
Proponuję również używać BULK COLLECT do wstawiania rekordów, spójrz na to
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;
/