2017-02-09 6 views
0

私は、同じDB構造を持つOracle DBと10個のMSSQLサーバを持つメインサーバを持っています。私は、MSSQLサーバー上MY_TABLEと同じ構造を有する主/ Oracleサーバー上で新しいテーブルMY_CENTRAL_TABLEを作成しMSSQL_C..etcは、MSSQL_A、MSSQL_Bという名前のすべてのサーバーのDBリンクを作成したとOracle:複数のMSSQLからデータを選択し、ORACLEの1つのテーブルに格納する方法は?

SELECT * FROM [email protected]_A 
SELECT * FROM [email protected]_B 
... 

を実行してデータを取得することができますdb_linkを識別する列が追加され、そこからデータが取得されました。 MY_TABLE @からデータをロードし、MY_CENTRAL_TABLEに挿入するストアドプロシージャを開発するのに役立ちますか?db_linkはプロシージャにパラメータとして渡されますか?

ありがとうございました!

答えて

2

あなたは動的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 [email protected]'|| 
         dblink_name||' t'; 
    execute immediate sql_statement; 
end; 
+0

はあなたにVAVに感謝します!私は非常に似た構文を試みたと確信していますが、うまくいきませんでした..これは素晴らしいです! – kafe

関連する問題