Table1(Column11, Column12, Column13)
Table2(Column21, Column22)
和以下映射表:
Table3(Sourcetable,Source column ,Destination table ,Destination column)
如何從表1中插入的數據作爲源表和目的表如表2所示,通過過程?
我正在使用oracle 11g;請幫助達到此目的!
感謝&問候, 殺手
Table1(Column11, Column12, Column13)
Table2(Column21, Column22)
和以下映射表:
Table3(Sourcetable,Source column ,Destination table ,Destination column)
如何從表1中插入的數據作爲源表和目的表如表2所示,通過過程?
我正在使用oracle 11g;請幫助達到此目的!
感謝&問候, 殺手
試試這個:
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
謝謝! Wernfried爲您提供解決方案。 – Hitman
嗨Wernifried!您可以請求幫助以滿足新要求 - – Hitman
如果要求更改爲以下內容,那麼解決方案= =是什麼?有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
你嘗試過什麼?解決方案可以使用遊標和動態SQL語句(例如,EXECUTE IMMEDIATE)。 – tvm