declare @str varchar(2000)
declare @szTempDBName varchar(20),
@tem_Str nvarchar(4000)
set @str=''
set @szTempDBName='vw_SJQJ_SF'set @tem_str='select TOP 3 @str=@str+''、''+rtrim(器具名称) from '+@szTempDBName+''exec sp_executesql @tem_str,N'@str varchar(2000) out,@szTempDBName varchar(20)',@str out ,@szTempDBNameprint @str

解决方案 »

  1.   

    exec ('select top 3 @str='''+@str+'''、'+'rtrim(器具名称) from '''+@szTempDBName+'''')
      

  2.   

    EXEC('select TOP 3 +'@str'+'='+'@str+'、'+rtrim(器具名称) from ' + @szTempDBName)
      

  3.   

    EXEC('select TOP 3'+ @str + '='' + @str + ''、' + rtrim(器具名称) + 'from ' + @szTempDBName)
      

  4.   

    变量在出了exec()之后就会无效,所以你上边在exec()外边声明的@str在@str里边就会识别不出来.用exec sp_executesql应该是比较好的办法了.