尝试使用另一个链接数据库上的多个表将数据插入到多个表中

时间:2017-09-18 20:46:52

标签: sql oracle plsql oracle12c

Hello在我的项目中我通过处理来自另一个链接数据库的数据来创建新的临时表。我已将我的表命名为STG_ABC_EMPTABLE,STG_ABC_DEPTTABLE,..........等,但我提取的源数据库的命名方式如employee_EMP,department_DEPT。我正在尝试创建PL / SQL块来插入表,并在插入时添加几列。我无法提出一个语句,它可以循环遍历所有源表并使用几个额外的列将数据插入目标。我的表也是从源表创建的,每个表中有2个额外的列。另外,我无法弄清楚如何仅将employee_EMP插入STG_ABC_EMPTABLE,将department_DEPT插入STG_ABC_DEPTTABLE。这是我提出的一些事情,但却试图完成它。

 set SERVEROUTPUT ON;
DECLARE
cursor c1 IS 
select distinct A.table_name as table_name_S,B.table_name as table_name_T from all_tab_columns@db_link A inner join (select distinct table_name from all_tab_columns where table_name like 'STG_%') B 
ON A.table_name LIKE '%' || substr(B.table_name,9,3) || '' where A.owner in('source');
v_count number;
time_rec timestamp;
c_source_GC varchar2(28) := 'XYZ';
BEGIN
v_count:=0;
for items in c1
LOOP
Execute immediate 'insert into '|| items.table_name_T ||
'(select ' || items.table_name_S || '.*,'
|| c_source_GC || ' as SOURCE_SYSTEM,
current_timestamp as DATE_LOADED_TIMESTAMP
from gntc.' || items.table_name_S ||'@db_link)';
v_count:= sql%Rowcount;
dbms_output.put_line('Number of rows inserted '||v_count||' into '|| items.table_name_T);
END LOOP;

commit;
end;

1 个答案:

答案 0 :(得分:1)

试试这段代码。

function removeIndividualTracker(key) {
   delete $scope.todos.trackers[key];             
}