免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1817 | 回复: 4
打印 上一主题 下一主题

请问:如何建一个统计所有表的记录个数的存储过程? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-02-01 13:44 |只看该作者 |倒序浏览
目的:要把所有表中的记录进行统计,并把统计结果存放到表:tbl_all中去。
本人用下面方法。循环里面有二种办法(带下划线的),但都出现错误:
delcare tbl_cur cursor for select name from sysobjects
go
declare @tbl_name char(30), @ssql char(100), @row_cnt int
open tbl_cur
fetch tbl_cur into @tbl_name
while @@sqlstatus=0
begin
  select @row_cnt=count(*) from @tbl_name  /*这第一种方法错误,大概表名不能是变量的*/
  select @ssql='select @row_cnt=count(*) from @tbl_name'
  exec (@ssql)  /*这第二种方法也错误,提示变量@row_cnt未定义*/

  insert into tbl_all (tblname,rowcount) values (@tbl_name,@row_cnt)
  fetch tbl_cur into @tbl_name
end
close tbl_cur
deallocate cursor tbl_cur
go

请问谁能帮我解决这个办法。谢谢!

论坛徽章:
0
2 [报告]
发表于 2005-02-01 15:36 |只看该作者

请问:如何建一个统计所有表的记录个数的存储过程?

begin
select @ssql="insert into tbl_all(tblname,rowcount) select "'+@tbl_name+'",count(*) from '+@tbl_name
exec (@ssql)
fetch tbl_cur into @tbl_name
end
另外,declare cursor的时候还要加上type='U'的条件

论坛徽章:
0
3 [报告]
发表于 2005-02-01 16:41 |只看该作者

请问:如何建一个统计所有表的记录个数的存储过程?

谢谢。这个问题是解决了。

那如果我还是希望单独获取 @row_cnt 这个变量的值(即count(*))的数值。又怎么解决?

论坛徽章:
0
4 [报告]
发表于 2005-02-01 16:49 |只看该作者

请问:如何建一个统计所有表的记录个数的存储过程?

建一个表,在exec()里插到这个表里
或者从systabstats表里可以得到记录数,不过不是很精确

论坛徽章:
0
5 [报告]
发表于 2005-02-02 08:21 |只看该作者

请问:如何建一个统计所有表的记录个数的存储过程?

谢谢。
就是说必须先中转到一个临时表里,然后再从这个表里取得。
直接得到的精确记录数的语句好象是找不出。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP