改成这样:declare @s nvarchar(1000)
declare @m1 varchar(100)
declare @m2 varchar (10)
set @s=''
set @m1=''
set @m2='t001'
set @s='select top 1 @m1=f1 from test where f2='''+@m2+''''
exec sp_executesql @s,N'@m1 varchar(100) output,@m2 varchar (10)',@m1 output,@m2
declare @m1 varchar(100)
declare @m2 varchar (10)
set @s=''
set @m1=''
set @m2='t001'
set @s='select top 1 @m1=f1 from test where f2='''+@m2+''''
exec sp_executesql @s,N'@m1 varchar(100) output,@m2 varchar (10)',@m1 output,@m2
set @s=''
set @m1=''
set @m2='t001'
set @s='select top 1 ' +@m1+'=f1 from test where f2='''+@m2+''''
--exec (@s)
select @s
結果:select top 1 =f1 from test where f2='t001'
set @m1=''有問題啦