如何在变量中存储FOR XML Path的输出?

Jac*_*ack 7 sql sql-server sql-server-2008

我想将XML Path的输出存储在变量中.但是这不起作用:

Declare @Tab    dbo.SingleColumnTable

Insert INTO @Tab

Values(
    'Jack'
)

Insert INTO @Tab

Values(
    'Armageddon'
)

Declare @RetVal varchar(8000) = ''

Select Top 1 @RetVal = Data
From
(
    Select ';' + ' ' + Name as 'Data'
               From @Tab t2
               for xml path('')
) v  
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在尝试将返回的输出的列名设置为Data,但它不起作用.我收到错误Invalid column name 'Data'.

Adr*_*der 11

尝试改变

Select Top 1 @RetVal = Data 
From 
( 
    Select ';' + ' ' + Name as 'Data' 
               From @Tab t2 
               for xml path('') 
) v
Run Code Online (Sandbox Code Playgroud)

Select @RetVal = 
( 
    Select ';' + ' ' + Name as Data
   From @Tab t2 
   for xml path('') 
)
Run Code Online (Sandbox Code Playgroud)

SQL Fiddle DEMO