我知道这个问题可能是主观的......但是要求最好的问题是'做任何事情的方式都是主观的。
我有一个Oracle数据库,我需要每周从另一个数据库中的表中导入新数据(我设置了数据库链接)。我想以简单可靠的方式自动化这个过程。
我最初的计划是使用源表名作为参数调用过程。然后,该过程将计算登台表的名称并插入数据。
CREATE OR REPLACE PROCEDURE DATA_IMPORT (v_source_table IN VARCHAR2)
AS
V_STAGING_TABLE VARCHAR2(30);
BEGIN
CASE WHEN v_source_table='SOURCE_TABLE_1' THEN V_STAGING_TABLE:='STAGING_TABLE_1';
WHEN v_source_table='SOURCE_TABLE_2' THEN V_STAGING_TABLE:='STAGING_TABLE_2';
ELSE V_STAGING_TABLE:=NULL;
END CASE;
INSERT INTO V_STAGING_TABLE
SELECT * FROM v_source_table@DBLINK1;
END;
/
然后为了让它按计划运行,我将创建另一个程序,该程序通过DATA_IMPORT过程为每个要导入的表执行,并使用DBMS_SCHEDULER进行计划。这听起来合理吗?