我有一个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/