2008-08-05 17 views
8

Mam tabeli o strukturze tak:SQL Server 2005 XML Explicit - formatowanie pomocy Need

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

Aby przejść do innej procedury przechowywanej, muszę XML wyglądać tak:

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

najlepszą udało mi się zrobić do tej pory był coraz to tak:

<root clientID="10705"/> 

Używam tego 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 

tej pory szukałem w dokumentacji na the MSDN page, ale ja już nie wyjdzie z pożądanych rezultatów.


@KG,

Yours dał mi wyjście to rzeczywiście:

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

mam zamiar trzymać się FOR XML EXPLICIT z Chrisem Leon teraz.

Odpowiedz

1

spróbować

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

Spróbuj tego, Chris:

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

przykro! Pomieszałem to, o co prosiłeś. Wolę XML AUTO tylko ze względu na łatwość utrzymania, ale uważam, że jedno z nich jest skuteczne. Przepraszam za nadzór ;-)

0

Dostałem go z:

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

Korzystanie z SQL Server 2005 (2008) lub przypuszczalnie znajdę dla XML PATH, aby umożliwić znacznie łatwiejsze w utrzymaniu niż SQL XML Explicit (szczególnie gdy SQL jest dłuższy).

W tym przypadku:

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') 
Powiązane problemy