嗨我想知道如何插入到specyfic表中,来自所选表的记录是相同的列模型。这是一种只从一个表中插入的方法
insert into shema2.MAILING_PERSON_LOG_TAB
select * from shema1.mailing_person_log_201008 t
where t.object_type = 'active'
而且我可以选择表名。有人会帮助我,使用select或procedure
从所有表中做到这一点select t.TABLE_NAME FROM all_tables t WHERE t.table_name LIKE 'MAILING_PERSON_LOG%'
答案 0 :(得分:0)
将insert语句构建为命令字符串并动态执行,例如(代码示例,根据您的要求进行调整):
declare
l_to_tablename varchar2(100);
begin
-- loop over tables to copy
for l_rec in (select t.TABLE_NAME
FROM all_tables t
WHERE t.table_name LIKE 'MAILING_PERSON_LOG%') loop
-- determine to_tablename from somewhere
select to_tablename
into l_to_tablename
from tablemapping t
where t.table_name = l_rec.table_name;
execute immediate 'insert into shema2.' || l_to_tablename ||
' select * from shema1.' || l_rec.table_name ||
' t where t.object_type = ''active''';
end loop;
end;
注意:如果表包含长字段,则无效。