2013-11-29 31 views
0

有兩個表如何從一個表被其他映射表通過程序將數據插入到其它表

Table1(Column11, Column12, Column13) 
Table2(Column21, Column22) 

和以下映射表:

Table3(Sourcetable,Source column ,Destination table ,Destination column) 

如何從表1中插入的​​數據作爲源表和目的表如表2所示,通過過程?

我正在使用oracle 11g;請幫助達到此目的!

感謝&問候, 殺手

+0

你嘗試過什麼?解決方案可以使用遊標和動態SQL語句(例如,EXECUTE IMMEDIATE)。 – tvm

回答

0

試試這個:

DECLARE 
sqlstr varchar2(1000); 
SourceCol varchar2(1000); 
DestCol varchar2(1000); 
BEGIN 

    FOR aTab IN (SELECT DISTINCT Source_table, Destination_table FROM Table3) LOOP 
    FOR aCol IN (SELECT Source_column, Destination_column 
       FROM Table3 
       WHERE Source_table = aTab.Source_table 
       AND Destination_table = aTab.Destination_table) 
    LOOP 
     SourceCol := SourceCol || aCol.Source_column ||','; 
     DestCol := DestCol || aCol.Destination_column ||','; 
    END LOOP; 
     SourceCol := REGEXP_REPLACE(SourceCol, ',$'); 
     DestCol := REGEXP_REPLACE(DestCol, ',$'); 
    sqlstr := 'insert into '||aTab.Destination_table||' ('||DestCol 
     ||') SELECT '||SourceCol||' FROM '||aTab.Source_table; 
    EXECUTE IMMEDIATE sqlstr; 
    END LOOP; 
END; 
/

您找到實例架構這裏SQL Fiddle

+0

謝謝! Wernfried爲您提供解決方案。 – Hitman

+0

嗨Wernifried!您可以請求幫助以滿足新要求 - – Hitman

+0

如果要求更改爲以下內容,那麼解決方案= =是什麼?有4個表: 表1(Column11,Column12,Column13) 表2(Column21,Column22) 表3(Column31,Column32,column33) 表4(Column21,Column22) 而下面的映射表: 表5(sourceTable會,源列,目標表,目標列) 如何從Table1插入數據作爲源表和目標表,如Table2,table3,table,4,Through Procedures? – Hitman

相關問題