我怎样写才能得到正确的结果?
我有这样一个T-SQL语句
declare @tmp2 varchar(10)
set @tmp2 = columnname
set @tmp = (select @tmp2 from tb1 where id = 1)
print @tmp
结果
columnname
这个不是我想要的。
用动态sql:
declare @tmp2 Nvarchar(10),@sql Nvarchar(200),@tmp varchar(20)
set @tmp2 = Ncolumnname
set @sql=select @tmp =+ @tmp2 + from table1 where id = 1
exec sp_executesql @sql ,N@tmp varchar(20) output, @tmp output
print @tmp
你说的问题是含变量的动态SQL语句的问题,你只能拆开来写,把动态变量单独摘到引号外面:
set @sql=select @tmp =+ @tmp2 + from table1 where id = 1
exec sp_executesql @sql ,N@tmp varchar(20) output, @tmp output