2008-08-05 11 views
8

У меня есть таблица со структурой, как следующее:SQL Server 2005 для XML Явного - Нужна помощью форматирования

------------------------------ 
LocationID  | AccountNumber 
------------------------------ 
long-guid-here | 12345 
long-guid-here | 54321 

Чтобы перейти в другую хранимую процедуру, мне нужен XML, чтобы выглядеть следующим образом:

<root> 
    <clientID>12345</clientID> 
    <clientID>54321</clientID> 
</root> 

лучшее, что я был в состоянии сделать до сих пор получаю так:

<root clientID="10705"/> 

Я использую этот SQL s tatement:

SELECT 
    1 as tag, 
    null as parent, 
    AccountNumber as 'root!1!clientID' 
FROM 
    Location.LocationMDAccount 
WHERE 
    locationid = 'long-guid-here' 
FOR XML EXPLICIT 

До сих пор, я посмотрел на документацию по the MSDN page, но я не вышел с желаемыми результатами.


@KG,

Ваш дал мне этот выход на самом деле:

<root> 
    <Location.LocationMDAccount> 
    <clientId>10705</clientId> 
    </Location.LocationMDAccount> 
</root> 

Я буду придерживаться FOR XML EXPLICIT от Криса Леона сейчас.

ответ

1

попробовать

SELECT 
    1 AS Tag, 
    0 AS Parent, 
    AccountNumber AS [Root!1!AccountNumber!element] 
FROM 
    Location.LocationMDAccount 
WHERE 
    LocationID = 'long-guid-here' 
FOR XML EXPLICIT 
0

Попробуйте это, Крис:

SELECT 
    AccountNumber as [clientId] 
FROM 
    Location.Location root 
WHERE 
    LocationId = 'long-guid-here' 
FOR 
    XML AUTO, ELEMENTS 

СТРАШНО ЖАЛЬ! Я перепутал то, о чем вы просили. Я предпочитаю XML AUTO просто для удобства обслуживания, но я считаю, что один из них эффективен. Мои извинения за надзоре ;-)

0

Я получил его:

select 
1 as tag, 
null as parent, 
AccountNumber as 'root!1!clientID!element' 
from 
Location.LocationMDAccount 
where 
locationid = 'long-guid-here' 
for xml explicit 
0

Использование 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'); 
0
 
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')