如何实现对一个用户下表的遍历循环复制?我按照书上的内容写的代码无法执行。connect hr/tiger;begin for i in (select table_name from user_tables
  where table_name not like '%MV%' 
    and table_name not in ('PLAN_TABLE')) loop
  execute immediate 'create table '||i.table_name||' as select * from '||
                       i.table_name||;
end loop; end;程序死在这里,出不来了。我的Oracle是9.2版本。

解决方案 »

  1.   

    begin
      for i in (select table_name
                  from user_tables
                 where table_name not like '%MV% '
                   and table_name not in ('PLAN_TABLE')) loop
        execute immediate 'create   table   ' || i.table_name ||
                          '   as   select   *   from   ' || i.table_name;
               end loop;
      end;最后一个||后面没东西?改了一下,试了,可以执行,报表名已经存在了,你创的新表名和原表名一样。
      

  2.   

    太笨了,这样简单的错误竟然看不出来!
    可是,这样的语句还是不行。
    begin for i in (select table_name from user_tablesh
      where table_name not like '%MV%' 
        and table_name not in ('PLAN_TABLE')) loop
      execute immediate 'create table '||i.table_name||'_bak as select * from '|| i.table_name;
    end loop; end;