日期:2014-05-17  浏览次数:20800 次

删除空表
如何删除用户下的所有没有数据的空表

------解决方案--------------------
drop table tb;
不可以么?还是要增加一条数据
------解决方案--------------------
写个过程啊,很简单的
先判断表是否有记录,然后DROP,有什么难度的吗
------解决方案--------------------
写存储过程罢,从user_tables表中查询num_rows(表中记录个数)列的值为0的table_name(表名),然后使用动态DDL语句删除表。
------解决方案--------------------
建议不要使用user_tables的方式来判断,虽然快,但是在第一次用脚本转移数据库结构和数据过来的话,有可能表的信息为空。

建议使用
if exists (select 1 from table where rownum < 2);
------解决方案--------------------
declare
tableName varchar2(100) := '';
begin
for tableList in (select table_name from user_tables where num_rows = 0) loop
tableName := 'drop table ' || tableList.Table_Name || ';';
dbms_output.put_line(tableName);
--具体的执行语句,请自己执行,我可不敢在我的数据库里试
--execute immediate tableName;
end loop;
end;