我想要做的是在变量@var中获取查询的“单值结果”。查询的输出不是记录集,而是单个字符串值。数据应该看起来像这样的东西“伦敦,诺丁汉,伯明翰,曼彻斯特,利兹,布莱克浦.......”
Declare @Var nvarchar(MAX)
Declare @DynamicSQL nvarchar(MAX)
BEGIN
SET @DynamicSQL = 'SELECT [CityName] from [TempTable]'
print @DynamicSQL
END
exec sp_executesql @DynamicSQL, N'@Var nvarchar(max) out', @Var out
select @Var
-- Returns String : 'Null'
-- Expected Result: 'London,Nottingham,Birmingham,Manchester,Leeds,Blackpool'
答案 0 :(得分:0)
您需要在sql语句中设置输出变量,如下所示:
SET @DynamicSQL = 'SELECT @Var = [CityName] from [TempTable]'
答案 1 :(得分:0)
首先,您需要将CityName
的返回值写入动态SQL语句中的变量@var
。
'SELECT @var = [CityName] from [TempTable]'
结果将是CityName
列的最后一行,因为该变量已被其他行覆盖:
因此,要连接行,您需要将下一行结果添加到每行的变量中,并在其间添加逗号。这就是你如何做到的:
'SELECT @var = [CityName] + @var + '','' from [TempTable]'
然后在你的输出中你需要删除字符串中的所有空格:
-- remove empty spaces
set @Var = REPLACE(@Var,' ','')
-- remove last comma
set @Var = LEFT(@Var,LEN(@Var)-1)
select @Var
结果应如下所示: