SQL - 如何在变量中分配记录

时间:2009-10-16 17:18:14

标签: sql sql-server xml tsql

AIM:将结果集转换为XML并将结果分配给变量

结果集:

M000017690
324067342
324067349
324067355
324154449

转换后的XML:

<Products>
  <Product ProductId="324067342" />
  <Product ProductId="324067349" />
  <Product ProductId="324067355" />
  <Product ProductId="324154449" />
  <Product ProductId="M000017690" />
</Products>

以下是我用于将结果集(上面)转换为XML的查询:

Select 1 AS Tag,NULL AS Parent,  NULL as [Products!1!ProductId],NULL as [Product!2!ProductId]
From @Temp 
UNION 
SELECT 2 AS Tag, 1 AS Parent, ProductId, ProductId
 FROM @Temp
FOR XML EXPLICIT 

现在我需要将此XML传递给另一个需要参数类型的存储过程:XML 所以基本思想是创建一个XML类型对象:

DECLARE @xml_data as XML

并将查询结果分配给此变量,如何将查询结果分配给@xml_data?

1 个答案:

答案 0 :(得分:1)

这个怎么样(适用于SQL Server 2005及以上版本):

DECLARE @xmldata XML

SELECT @xmlData = 
        (SELECT ProductId as '@ProductId'
         FROM @Temp 
         FOR XML PATH('Product'), ROOT('Products')
        )

SELECT @xmldata

马克