博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MSSQL数据库统计所有表的记录数
阅读量:6982 次
发布时间:2019-06-27

本文共 1227 字,大约阅读时间需要 4 分钟。

今天需要筛选出来库中行数不为零的表,于是动手写下了如下存储过程。

CREATE PROCEDURE TableCount AS BEGINSET NOCOUNT ONDECLARE @t1 AS TABLE(id INT IDENTITY,NAME NVARCHAR(50),RowsCount INT)DECLARE @indexid AS INTDECLARE @maxid AS INTDECLARE @count AS INTDECLARE @name AS VARCHAR(50)DECLARE @sqlstr AS NVARCHAR(500)INSERT INTO @t1 SELECT NAME,0 FROM dbo.sysobjects WHERE type='U'SELECT @maxid=MAX(id),@indexid=1 FROM @t1WHILE(@maxid>=@indexid)BEGINSELECT @name = name FROM @t1 WHERE id=@indexidSET @sqlstr = 'SELECT @Count1=COUNT(0) FROM '+@nameexec sp_executesql @sqlstr,N'@Count1 int output',@count outputUPDATE @t1 SET RowsCount=@count WHERE  id=@indexidSET @indexid=@indexid+1ENDSET NOCOUNT OFFSELECT * FROM @t1 WHERE RowsCount>0ENDGOEXEC TableCountGO

这样大功告成!

 

事后上网查阅相关资料发现有更简便的方法,贴在这里供大家参考吧。

CREATE TABLE #temp (Name VARCHAR (255), RowsCount INT)EXEC sp_MSforeachtable 'INSERT INTO #temp SELECT ''?'', COUNT(0) FROM ?'SELECT Name, RowsCount FROM #temp WHERE RowsCount>0 ORDER BY NameDROP TABLE #temp

注: 系统存储过程sp_MSforeachtable和sp_MSforeachdb,用于遍历每个表和遍历每个数据库。

总结,遇到问题还是先查一下有没有现成的方法能省不少的时间的,而且还可以学习到新的知识。

 

@ 提供的更快捷的方法: (2015-03-27编辑)

select rows,OBJECT_NAME(id) as TABLENAME from sysindexes where indid=0

 

转载于:https://www.cnblogs.com/erdeni/p/AllTableRowsCount.html

你可能感兴趣的文章
windows programming
查看>>
a标签的link、visited、hover、active的顺序
查看>>
SQL系列(四)—— 唯一值(distinct)
查看>>
《数据结构》例1.3
查看>>
堆和栈的区别 (转贴)
查看>>
OpenSSL s_server / s_client 应用实例
查看>>
微信小程序开发工具(0.9.092300)下载地址,分享给没有公众号的小伙伴
查看>>
项目中的常见算法
查看>>
(转)GCT之逻辑经验总结(拿来主义)
查看>>
虚拟继承中子类和父类的构造函数顺序1
查看>>
js错误: Unexpected number in JSON at position 2792 value里面有双引号怎么解决
查看>>
(实践篇)剖析最近项目使用的一个框架
查看>>
usaco Typo
查看>>
字符串
查看>>
创建对象的三种方式
查看>>
spring学习之spring 插件 for eclipse
查看>>
js-sha256源码
查看>>
运维笔试题
查看>>
dispaly、position、float之间的关系与相互作用
查看>>
MyEclipse加入jquery.js文件missing semicolon的错误
查看>>