SQL Server 2005 For XML Explicit - 需要格式帮助
-
08-06-2019 - |
题
我有一个结构如下的表:
------------------------------
LocationID | AccountNumber
------------------------------
long-guid-here | 12345
long-guid-here | 54321
为了传递到另一个存储过程,我需要 XML 如下所示:
<root>
<clientID>12345</clientID>
<clientID>54321</clientID>
</root>
到目前为止我能做的最好的事情就是这样:
<root clientID="10705"/>
我正在使用这个 SQL 语句:
SELECT
1 as tag,
null as parent,
AccountNumber as 'root!1!clientID'
FROM
Location.LocationMDAccount
WHERE
locationid = 'long-guid-here'
FOR XML EXPLICIT
到目前为止,我已经查看了有关的文档 MSDN 页面, ,但我还没有得到想要的结果。
@公斤,
你的实际上给了我这个输出:
<root>
<Location.LocationMDAccount>
<clientId>10705</clientId>
</Location.LocationMDAccount>
</root>
我会坚持下去 FOR XML EXPLICIT
目前由克里斯·莱昂提供。
解决方案
尝试
SELECT
1 AS Tag,
0 AS Parent,
AccountNumber AS [Root!1!AccountNumber!element]
FROM
Location.LocationMDAccount
WHERE
LocationID = 'long-guid-here'
FOR XML EXPLICIT
其他提示
试试这个,克里斯:
SELECT
AccountNumber as [clientId]
FROM
Location.Location root
WHERE
LocationId = 'long-guid-here'
FOR
XML AUTO, ELEMENTS
非常抱歉!我混淆了你的要求。我更喜欢 XML AUTO 只是为了便于维护,但我相信任何一种都是有效的。我对疏忽表示歉意;-)
使用 SQL Server 2005(或者可能是 2008),我发现 XML PATH 比 XML Explicit 更容易维护 SQL(特别是当 SQL 较长时)。
在这种情况下:
SELECT AccountNumber as "clientID"
FROM Location.LocationMDAccount
WHERE locationid = 'long-guid-here'
FOR XML PATH (''), Root ('root');
我得到它:
select
1 as tag,
null as parent,
AccountNumber as 'root!1!clientID!element'
from
Location.LocationMDAccount
where
locationid = 'long-guid-here'
for xml explicit
SELECT 1 as tag, null as parent, AccountNumber as 'clientID!1!!element' FROM Location.LocationMDAccount WHERE locationid = 'long-guid-here' FOR XML EXPLICIT, root('root')
不隶属于 StackOverflow