Удаление записей из исходной таблицы после того, как они были перенесены с помощью хранимой процедуры в целевую таблицу


Это моя хранимая процедура, которую я получил с любезной помощью user75ponic generated.

 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;
/

Теперь этот хранимый proc должен передавать записи из исходной таблицы в целевую, и он это делает.

Моя задача состоит в том, чтобы включить приведенный ниже сценарий удаления в эту хранимую процедуру. Цель состоит в том, чтобы удалить записи из исходной таблицы после их перемещения, но только если они присутствуют в целевой таблице.

Ниже приведен сценарий удаления:

DELETE FROM src WHERE src.table_date <= SYSDATE - 360 AND src.table_id IN (SELECT table_id FROM trg.column);

Как ссылка это оригинальный пост: оригинальный пост

1 2

1 ответ:

Выполнив вставку, вы можете добавить приведенную ниже инструкцию 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);