tsql - TSQL:使用FOR XML每个元素一行

标签 tsql for-xml

我有一个SQL Server 2005查询,该查询生成较大的结果集(最大为数GB):

SELECT * FROM Product FOR XML PATH('Product')


运行查询将生成包含包含许多产品元素的文档的单行:

Row 1:
<Product>
  <Name>Product One</Name>
  <Price>10.00</Price>
</Product>
<Product>
  <Name>Product Two</Name>
  <Price>20.00</Price>
</Product>
...


我想更改查询,以使结果集不是返回包含单个包含多个产品元素的文档的一行结果,而是返回多个行,每个包含单个包含Product元素的文档的行:

Row 1:
<Product>
  <Name>Product One</Name>
  <Price>10.00</Price>
</Product>

Row 2:
<Product>
  <Name>Product Two</Name>
  <Price>20.00</Price>
</Product>


最后,我想使用IDataReader从C#中使用此查询,而无需将SQL Server或我的应用程序将整个结果集都加载到内存中。我可以对SQL进行任何更改以启用此方案吗?

最佳答案

我想您想要这样的东西。(您可以在AdventureWorks的查询下面运行)

SELECT ProductID
      ,( SELECT * FROM Production.Product AS b WHERE a.ProductID= b.ProductID FOR XML PATH('Name') ) AS RowXML
FROM  Production.Product AS a

关于tsql - TSQL:使用FOR XML每个元素一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13982871/

相关文章:

SQL FOR XML - 将数据输出为元素或属性

sql-server - 当文档似乎说它不会时,在表上使用 sp_rename 会更新表的外键

SQL Server 2008 FOR XML 路径帮助

c# - 初始化存储过程输出参数

sql - 比较两个不同表中的不相同字段

sql - 如何在子查询中使用 FOR XML?

sql-server - SQL Server : Specify Column Name as Attribute Using FOR XML

sql - 使用 SQL FOR XML PATH,如何实现以下格式化的 XML 输出?

sql - 添加默认约束的命令

tsql - SQL Server 变量的微妙之处