日期:2014-05-18  浏览次数:20349 次

请教: 获取由变量来指定表名的记录总数
我想实现统计一个用户指定表里的记录数.   尝试了几个方法都不行.

declare   @table   varchar,   @recordCount   int
--   注,   @table变量是用于统计记录数的表

set   @table   =   'article '

/*
select   @recordCount=   count(*)   from   article   --最终效果,相当于@table变量的值为 'article '
*/

/*
select   @recordCount   =   count(*)   from   @table   --错误,   "必须声明变量 '@table ' "
*/

/*
execute( 'SELECT   @reocrdCount   =   count(*)   from   '   +   @table)   --错误,   "必须声明变量 '@recordCount "
*/



------解决方案--------------------
declare @table varchar(10)
declare @recordCount int
set @table = 'ttPoi '

exec( 'select count(*) from ' + @table)
return @@Rowcount



------解决方案--------------------
别用exec,要用 exec sp_executesql ,这样可以传参数,你先看帮助吧.看看sp_executesql 的用法.如果用exec的话,变量只在动态语句中有生存期.但是你的表名要用变量,又必须要用动态sql
------解决方案--------------------
--try

declare @table varchar(255), @recordCount int
set @table= '表名 '
declare @sql nvarchar(1000)
set @sql= 'select @recordCount=count(*) from [ '+@table+ '] '

exec sp_executesql @sql, N '@recordCount int output ', @recordCount output
select @recordCount