+ -
当前位置:首页 → 问答吧 → drop模糊匹配表

drop模糊匹配表

时间:2011-09-08

来源:互联网

这两天在跟一个项目

cc用户下有300多张表,其中以btas、ttxd、yye、ssyed等开头的表有100多张。


现在有个需求:


能否有一条语句 -----drop 这些以btas、ttxd、yye、ssyed等开头的表  ?

就像like匹配那样   以这些字段开头

如: like  'btas%、ttxd%、yye%、ssyed%'


请前辈指点?!

作者: sxitsxit   发布时间: 2011-09-08

begin
cursor db_table is select * from user_all_tables where table_name like 'btas%' or like '' .... loop
execute immediate 'drop table :1 ' using db_table.table_name;

end loop;

end;

作者: luxueqin521   发布时间: 2011-09-08



QUOTE:原帖由 luxueqin521 于 2011-9-8 15:03 发表
begin
cursor db_table is select * from user_all_tables where table_name like 'btas%' or like '' .... loop
execute immediate 'drop table :1 ' using db_table.table_name;

end loop;

end;

你这不对的,ddl不能用绑定变量的,没有意义,但是方式是可以取的

作者: dingjun123   发布时间: 2011-09-08

呵呵,好久没写过SQL了:
begin
  for a in (select * from user_all_tables) loop
  execute immediate 'drop table '||  a.table_name;
  end loop;
  end;

作者: luxueqin521   发布时间: 2011-09-08



Try!

begin
   for rec in (select TABLE_NAME
                 from all_tables
                  where OWNER = 'CC'
                    and (substr(TABLE_NAME, 1, 4) in('BTAS', 'TTXD') or substr(TABLE_NAME, 1, 3) = 'YYE' or substr(TABLE_NAME, 1, 5) = 'SSYED')) loop
       execute immediate 'drop table ' || rec.TABLE_NAME;
   end loop;
end;


作者: bell6248   发布时间: 2011-09-08

谢谢!
晚上回去 我试试

作者: sxitsxit   发布时间: 2011-09-08