从 Select 语句中为变量设置超过 1 个值

Set more than 1 value to variable from Select statement

我正在尝试像这样设置 varchar 变量:

DECLARE @var NVARCHAR(40)
set     @var = (SELECT name from Tmptable AS name )

我想要这样的变量存储值:'name1,name2,name3,...' 此 returns 与标题中的错误类似:子查询返回了超过 1 个值。

我在函数的参数中使用了这个变量

Select *
Into Tmp2
FROM [dbo].[MyFunction](@var, DEFAULT)  AS PARAM
.....

我知道我们不能在 variable.I 中放入多个值,需要通过将值拆分为“,”

来表示多个值的变量

这方面的任何注意事项

您可以使用 STUFFFOR XML:

DECLARE @var NVARCHAR(40)
Set     @var = 
(
    SELECT  Distinct Stuff((Select ',' + Name From Tmptable For Xml Path ('')), 1, 1, '') 
    From    Tmptable
)

但是,理想情况下,您不应将逗号分隔值存储在 VARCHAR 中。使用 table 变量可能会更好:

Declare @Var Table
(
    Name    NVarchar (40)
)

Insert  @Var (Name)
Select  Name
From    TmpTable