15

我有名称以“TBL_*”开头的表,但我不能通过单个命令删除所有表。

我怎样才能删除这些表?

4

2 回答 2

21

您可以编写一个脚本,特别是循环,在其中从 user_tables 中选择 Table_name 并迭代此循环,然后使用“立即执行”命令删除它们。

但我会建议这个 - 在 sql 工具中做

  select 'drop table ' || table_name || ';' from user_tables where table_name like 'TBL_%'

然后你复制这个查询的输出并粘贴到你的 sql 编辑器中,然后执行。请记住,如果 sql+ 是您的编辑器,如果您将它们全部粘贴,它们将开始执行。可能您想先使用记事本查看和编辑它。

但是你不能在一个命令中删除多个表。检查此链接以获取与删除表相关的其他选项http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9003.htm

于 2013-08-03T07:24:56.493 回答
14
BEGIN

  --Bye Tables!
  FOR i IN (SELECT ut.table_name
              FROM USER_TABLES ut) LOOP
    EXECUTE IMMEDIATE 'drop table '|| i.table_name ||' CASCADE CONSTRAINTS ';
  END LOOP;

END;
于 2016-10-27T18:43:34.700 回答