gpt4 book ai didi

sql-server - 将动态sql的结果赋值给变量

转载 作者:行者123 更新时间:2023-12-01 18:18:32 24 4
gpt4 key购买 nike

我正在执行动态 SQL 将表中的所有列转换为字符串

所以毕竟我这样做了

EXEC(@template); 

其中@template是动态生成的查询,因此:

col1  col2 col3
---------------
1 7 13
2 8 14
3 9 15
4 10 16
5 11 17
6 12 18

(此结果:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18)

如何将结果字符串分配给变量

类似的东西?

DECLARE  @result AS varchar(max);
SET @result = EXEC(@template);

最佳答案

您可以使用带输出参数的 sp_executesql。

declare @S nvarchar(max) = 'select @x = 1'

declare @xx int
set @xx = 0

exec sp_executesql @S, N'@x int out', @xx out

select @xx

结果:

(No column name)
1

编辑

在我的示例中,@S 代替了您的@template。正如您所看到的,我为 @x 分配了一个值,因此您需要修改 @template ,以便它在内部将逗号分隔的字符串分配给您在第二个参数中定义的变量sp_executesql。在我的示例中 N'@x int out'。您可能需要一个 varchar(max) 输出参数。类似于 N'@Result varchar(max) out'

这是从 master..spt_values 构建逗号分隔字符串的另一个示例

declare @template nvarchar(max)
set @template =
'select @Result += cast(number as varchar(10))+'',''
from master..spt_values
where type = ''P''
'

declare @CommaString varchar(max)
set @CommaString = ''

exec sp_executesql @template, N'@Result varchar(max) out', @CommaString out

select @CommaString

关于sql-server - 将动态sql的结果赋值给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6968512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com