因工作需要查看库里每个表中的记录数,逐表查询太辛苦,故写一过程处理如下:

   --基本思路为:到系统表查出表名;然后逐表构造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;