У меня есть таблица со структурой, подобной следующей:
------------------------------
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 просто для удобства сопровождения, но я считаю, что любой из них эффективен. Мои извинения за недосмотр ;-)
Я получил это с:
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 PATH гораздо проще поддерживать SQL, чем для явного XML (особенно, если SQL длиннее).
В таком случае:
SELECT AccountNumber as "clientID"
FROM Location.LocationMDAccount
WHERE locationid = 'long-guid-here'
FOR XML PATH (''), Root ('root');
ВЫБЕРИТЕ 1 в качестве тега, ноль в качестве родителя, AccountNumber как «clientID! 1 !! элемент» FROM Location.LocationMDAccount ГДЕ locationid = 'long-guid-here' FOR XML EXPLICIT, root ('root')