sql >> Base de Datos >  >> RDS >> Oracle

Procedimiento o trabajo de Oracle para copiar automáticamente datos de un esquema a otro según la línea de tiempo

Intenta usar MERGE , Puede reemplazar la condición where para obtener los registros que tienen más de 360 ​​días según su lógica. La condición ON debe ser las columnas de unión coincidentes de las dos tablas.

Si el código está bien, tal vez pueda programarlo para que se ejecute todas las semanas.

También sugiero usar BULK COLLECT para insertar registros, eche un vistazo a esto

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