日期:2014-05-17  浏览次数:20387 次

帮忙看下这么简单的语句会出错呢
declare @m_count int
declare @sql varchar(1000)
set @sql = 'select @m_count=count(*) from table ' 
exec(@sql ) 
print @m_count

执行报必须声明变量 '@m_count',我要把count(*)值赋给变量,因为table是动态的。所以要用动态语句

------解决方案--------------------
MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql;通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有。
详细请看:http://www.cnblogs.com/xbf321/archive/2008/11/02/1325067.html
------解决方案--------------------
declare @m_count int
declare @sql varchar(1000)
set @sql = 'select count(*) from tb ' 
exec(@sql ) 
set @m_count=@@rowcount
print @m_count

------解决方案--------------------

------解决方案--------------------
declare @m_count int
declare @sql nvarchar(1000)
set @sql = N'select @m_count=count(*) from table' 
exec sp_executesql @sql,N'@m_count int output',@m_count=@m_count output 
print @m_count

这样就可以了