DROP在Oracle SQL中以"EXT_"开头的所有表

Ahm*_*aya 12 sql oracle

我知道这个问题可能会问很多次,但我找不到一行SQL语句.我记得我之前做过但现在我不记得我是怎么做的

我想删除名称以"EXT_"开头的所有表.是否可以使用一行SQL语句实现它.

tvm*_*tvm 32

您可以使用简短的匿名块来执行此操作.

BEGIN
  FOR c IN ( SELECT table_name FROM user_tables WHERE table_name LIKE 'EXT_%' )
  LOOP
    EXECUTE IMMEDIATE 'DROP TABLE ' || c.table_name;
  END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)

  • 还包括“级联约束”,以便在涉及外键时删除这些表的顺序不会成为问题。 (3认同)

Ale*_*lak 8

只有一个声明是不可能的.通常,我编写一个sql来获取所有表,然后执行结果:

select 'drop table ' || table_name || ';'
from   user_tables
where  table_name like 'EXT_%';
Run Code Online (Sandbox Code Playgroud)

  • 复制所有并执行它们可以很容易.选择'drop table'|| table_name || '; 'from user_tables where table_name like'EXT_%'; (2认同)