2008-08-05 36 views
8

Tôi có một bảng với một cấu trúc như sau:SQL Server 2005 Đối với XML Explicit - Cần giúp đỡ định dạng

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

Để vượt qua vào một thủ tục lưu trữ, tôi cần XML trông như thế này:

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

Điều tốt nhất tôi đã có thể làm cho đến nay đã nhận được nó như thế này:

<root clientID="10705"/> 

tôi đang sử dụng này 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 

Cho đến giờ, tôi đã xem tài liệu trên the MSDN page, nhưng tôi chưa đưa ra kết quả mong muốn.


@KG,

Yours đã cho tôi kết quả này thực sự:

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

Tôi sẽ gắn bó với FOR XML EXPLICIT từ Chris Leon cho bây giờ.

Trả lời

1

thử

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

Hãy thử điều này, Chris:

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

vô cùng xin lỗi! Tôi trộn lẫn những gì bạn yêu cầu. Tôi thích XML AUTO chỉ để dễ bảo trì, nhưng tôi tin rằng một trong hai là hiệu quả. lời xin lỗi của tôi cho các giám sát ;-)

0

tôi đã nhận nó với:

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

Sử dụng SQL Server 2005 (hoặc có lẽ 2008) tôi tìm cho PATH XML để cho phép dễ dàng hơn nhiều để duy trì SQL so với XML Explicit (đặc biệt khi SQL dài hơn).

Trong trường hợp này:

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') 
Các vấn đề liên quan