DECLARE @SQLCheckSourceData Nvarchar(4000) --注意改类型
DECLARE @TableName Nvarchar(512)
DECLARE @num int SET @TableName='Categories'SELECT @SQLCheckSourceData = 'SELECT  @num=COUNT(*) FROM '+@TableName
EXEC sp_executesql @SQLCheckSourceData),N'@num int out',@num out
select 结果=@num

解决方案 »

  1.   

    感谢,但是我高不明白的是用EXEC不行吗?
      

  2.   

    而且感觉上'SELECT  @num=COUNT(*) FROM '+@TableName也不符合动态SQL的语法啊?
      

  3.   

    SELECT @SQLCheckSourceData 
    = 'SELECT  '+ convert(char,@num) +'= COUNT(*) FROM '+@TableName
    由于有数字,它会自动转换字符类型,我也碰到过,转化成字符串加到整个string里面,因为没有引号,还是可以作为数字进行查询的