declare @name varchar(200)
declare @i int
declare @result table (name varchar(100))
declare @s nvarchar(100)
declare A cursor for (SELECT name FROM sysobjects where type='U') OPEN A
fetch next from A into @name WHILE @@FETCH_STATUS=0
begin
set @s='select @i=COUNT(1) from '+@name+''
exec sp_executesql @s,N'@i int output',@i output
if @i>=1 --0为空表 >1为有数据的表名
insert into @result select @name
fetch next from A into @name
end close A deallocate A select * from @result
declare @i int
declare @result table (name varchar(100))
declare @s nvarchar(100)
declare A cursor for (SELECT name FROM sysobjects where type='U') OPEN A
fetch next from A into @name WHILE @@FETCH_STATUS=0
begin
set @s='select @i=COUNT(1) from '+@name+''
exec sp_executesql @s,N'@i int output',@i output
if @i>=1 --0为空表 >1为有数据的表名
insert into @result select @name
fetch next from A into @name
end close A deallocate A select * from @result