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