SQL Server 2005 For XML Explicit-需要帮助格式
时间:2020-03-05 18:37:52 来源:igfitidea点击:
我有一个结构如下的表:
------------------------------ 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>
我现在将继续使用Chris Leon的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只是为了易于维护,但是我相信任何一个都是有效的。我对监督表示歉意;-)
回答
我得到了:
select 1 as tag, null as parent, AccountNumber as 'root!1!clientID!element' from Location.LocationMDAccount where locationid = 'long-guid-here' for xml explicit
回答
我发现使用SQL Server 2005(或者大概是2008)比使用XML Explicit(尤其是在SQL较长时)使XML PATH的维护更加容易。
在这种情况下:
SELECT AccountNumber as "clientID" FROM Location.LocationMDAccount WHERE locationid = 'long-guid-here' FOR XML PATH (''), Root ('root');