SQL Server 2005 для явного XML — нужна помощь по форматированию
-
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 позволяет гораздо проще поддерживать SQL, чем XML Explicit (особенно, если 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')