如何可以过滤SQL数据库中表的字段记录为空的表?

来源:百度知道 编辑:UC知道 时间:2024/07/03 03:59:52
就是说,某数据库里各种表,表里只有字段名但没有记录的表都不要,该怎么弄?望详细解答,谢谢。
不是要一个个的表看,是一下子可以过滤掉没有数据的表。

declare @cur cursor
declare @n nvarchar(500)
declare @r as int
declare @sql nvarchar(500)
set @cur= cursor for
SELECT name FROM sysobjects WHERE (xtype = 'u')

open @cur
FETCH NEXT FROM @cur INTO @N
WHILE @@FETCH_STATUS = 0
BEGIN
set @sql ='if not exists(SELECT * FROM ' + @n + ') drop table ' + @n
--exec sp_executesql @sql --我先注释了这一行,注意危险,你确认一下
print @sql
FETCH NEXT FROM @cur INTO @N
END

你的问题是改了又改,我的回答也改了又改
上面的回答中: exec sp_executesql @sql 就把没有行的表给删除了,看注释
如果你要列出表的话,如下:
set nocount on
declare @cur cursor
declare @n nvarchar(500)
declare @r as int
declare @sql nvarchar(500)
set @cur= cursor for
SELECT name FROM sysobjects WHERE OBJECTPROPERTY(id, N'IsUserTable') = 1
declare @tb table (name nvarchar(50) ,rows int)

open @cur
FETCH NEXT FROM @cur INTO @N
WHILE @@FETCH_STATUS