【发布时间】:2012-04-07 23:36:08
【问题描述】:
我正在尝试将 FOR XML 查询的结果作为文本获取。 我在这里发现了一些类似的问题: Using SQL Server "FOR XML": Convert Result Datatype to Text/varchar/string whatever? 但在我的情况下,我使用 WITH XMLNAMESPACES 语句,这个解决方案对我不起作用。 如何以文本形式获得以下查询的结果?
WITH XMLNAMESPACES ('urn:blablablabla' as bi)
SELECT 'urn:blablabla.xsd' AS "@xsi:schemaLocation",
(SELECT 'aaaa' AS 'bi:idValue',
'bbbb' AS 'bi:idContext'
FOR XML PATH('bi:Part1'),TYPE),
(SELECT 'cccc' AS 'bi:idValue',
'dddd' AS 'bi:idContext'
FOR XML PATH('bi:Part2'),TYPE)
FOR XML PATH('bi:Items'), ELEMENTS XSINIL
谢谢
结果应该是这样的:
<bi:Items xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bi="urn:blablablabla" xsi:schemaLocation="urn:blablabla.xsd">
<bi:Part1 xmlns:bi="urn:blablablabla">
<bi:idValue>aaaa</bi:idValue>
<bi:idContext>bbbb</bi:idContext>
</bi:Part1>
<bi:Part2 xmlns:bi="urn:blablablabla">
<bi:idValue>cccc</bi:idValue>
<bi:idContext>dddd</bi:idContext>
</bi:Part2>
</bi:Items
我的目标是将此结果作为文本而不是 XML 数据类型。 例如做这样的事情:
DECLARE @ResultText NVARCHAR(MAX)
SET @ResultText = ... Returned text from this query ...
另外也许你知道如何避免在每个节点中重复命名空间?
谢谢
【问题讨论】:
-
你的例子的输出应该是什么样的?
标签: sql-server