2013-11-29 5 views
0

Есть две таблицыКак вставить данные из одной таблицы в другую таблицу, другой таблицы отображения с помощью процедуры

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

И следующее Mapping Таблица:

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

Как вставить данные из Table1, как исходная таблица и таблица назначения в таблице 2, через процедуры?

Я использую oracle 11g; пожалуйста, помогите добиться этого!

Благодаря & С уважением, Hitman

+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; 
/

Вы найдете здесь, Schema продукта примера SQL Fiddle

+0

спасибо! Вернфрид для вашего решения. – Hitman

+0

Привет, Вернифрид! Не могли бы вы помочь в новом требовании? – Hitman

+0

Если требование изменено на следующее, то каково будет решение- =? Есть 4 таблицы: Table1 (Column11, Column12, Column13) Table2 (Column21, Column22) Таблица3 (Column31, Column32, column33) Таблица 4 (Column21, Column22) И следующее Mapping Таблица: Table5 (SourceTable, Исходный столбец, Таблица назначения, Столбец назначения) Как вставить данные из таблицы 1 в качестве исходной таблицы и таблицы назначения в виде таблицы2, таблицы3, таблицы, 4, сквозных процедур? – Hitman

Смежные вопросы