知道记录值,从所选表中插入所有记录

时间:2016-04-14 09:10:14

标签: sql oracle select

嗨我想知道如何插入到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%'

1 个答案:

答案 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;

注意:如果表包含长字段,则无效。