因工作需要查看库里每个表中的记录数,逐表查询太辛苦,故写一过程处理如下:
--基本思路为:到系统表查出表名;然后逐表构造sql语句,查询记录数并插入临时表
--创建临时表,保存数据
create table #tmptab(
tableName varchar(100),
recordNum bigint
);
--声明游标,获取数据库mydb下所有表名
Declare MyCursor Cursor
For Select [name] From mydb..sysobjects where xtype='u'
--打开游标
Open MyCursor
--定义变量
Declare @tableName nvarchar(max),@sql nvarchar(max)
Fetch Next From MyCursor Into @tableName
--遍历所有表,逐个查询每个表中的记录数
While @@Fetch_status = 0
--@@Fetch_status = 0是指:游标未到末尾
Begin
--拼sql ,将表名及该表的记录数存入临时表
Set @sql = 'insert into #tmptab Select '''+ @tableName + ''' ,count(*) From '+ @tableName
Exec(@sql)
Fetch Next From MyCursor Into @tableName
End
--关闭游标
Close MyCursor
Deallocate MyCursor
--查询统计结果
select * from #tmptab order by recordNum desc;
--清除临时表
drop table #tmptab;