读书人

查询数据库中全部不为空的表的表名?

发布时间: 2013-06-25 23:45:41 作者: rapoo

查询数据库中所有不为空的表的表名????
我知道写个游标


declare @name varchar(200)
declare A cursor for (SELECT name FROM sysobjects where type='U')
OPEN A
fetch next from A into @name
WHILE @@FETCH_STATUS=0
begin
---这里怎么写呢??
fetch next from A into @name
end
close A
deallocate A









[解决办法]
declare @s varchar(200)
set @s =''
declare @t table (tablename varchar(20), ct int)
set @s ='select '+@name+' count(1) from '+@name

insert into @t
exec (@s)










select * from @t

[解决办法]
???
select distinct OBJECT_NAME(id)
from sys.sysindexes
where id > 100 --and indid =0
and rowcnt >0

[解决办法]
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=0
insert into @result select @name
fetch next from A into @name
end
close A
deallocate A
select * from @result
-----------
name
员工工资表
员工考勤表
员工请假表
Job
na
员工信息表


[解决办法]
--也来一个吧
exec sp_MSForEachTable
@precommand=N'
create table ##(
表名 sysname,
记录数 int,
保留空间 Nvarchar(10),
使用空间 varchar(10),


索引使用空间 varchar(10),
未用空间 varchar(10))',
@command1=N'insert ## exec sp_spaceused ''?''',
@postcommand=N'select 表名 from ## where 记录数>0 drop table ##'

读书人网 >SQL Server

热点推荐