【问题标题】:Oracle: how to select data from multiple MSSQL and store into one table on ORACLE?Oracle:如何从多个 MSSQL 中选择数据并存储到 ORACLE 上的一张表中?
【发布时间】:2017-02-09 16:32:34
【问题描述】:

我有一台带有 Oracle DB 的主服务器和 10 台具有相同 DB 结构的 MSSQL 服务器。我已经为所有名为 MSSQL_A、MSSQL_B、MSSQL_C..etc 的服务器创建了数据库链接,并且可以通过执行获取数据

SELECT * FROM MY_TABLE@MSSQL_A
SELECT * FROM MY_TABLE@MSSQL_B
...

我在主/Oracle 服务器上创建了新表 MY_CENTRAL_TABLE,其结构与 MSSQL 服务器上的 MY_TABLE 相同,并带有标识数据来源的 db_link 的附加列。 你能帮我开发一个存储过程,它会从 MY_TABLE@ 加载数据并将其插入到MY_CENTRAL_TABLE,其中 db_link 将作为参数传递给过程吗?

谢谢!

【问题讨论】:

    标签: oracle plsql


    【解决方案1】:

    您需要使用动态 sql:

    procedure load_from_dblink(dblink_name string) 
    is
        sql_statment varchar2(2000);
    begin
        sql_statement := "insert into my_central_table select '''||
                          dblink_name||
                          ''', t.* from my_table@'||
                          dblink_name||' t';
        execute immediate sql_statement;
    end;
    

    【讨论】:

    • 谢谢你!我确定我尝试了非常相似的语法,但没有奏效.. 这很好用!
    猜你喜欢
    • 1970-01-01
    • 2011-04-03
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    相关资源
    最近更新 更多