2008-08-05 25 views
8

मैं निम्नलिखित की तरह एक संरचना के साथ एक मेज है:SQL सर्वर 2005 एक्सएमएल स्पष्ट के लिए मदद चाहिए स्वरूपण

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

एक और संग्रहीत प्रक्रिया में पारित करने के लिए, मैं एक्सएमएल जरूरत है इस तरह देखने के लिए:

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

सबसे अच्छा मैं अब तक इस तरह यह हो रही थी ऐसा करने में सक्षम किया गया है:

<root clientID="10705"/> 

मैं इस एसक्यूएल रों उपयोग कर रहा हूँ 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 

बहुत खेद है! मैंने जो जोड़ा था उसे मिलाया। मैं केवल बनाए रखने की आसानी के लिए एक्सएमएल ऑटो पसंद करता हूं, लेकिन मेरा मानना ​​है कि कोई भी प्रभावी है। निरीक्षण ;-)

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 सर्वर 2005 (या शायद 2008) मैं एक्सएमएल स्पष्ट के लिए की तुलना में एसक्यूएल बनाए रखने के लिए बहुत आसान है के लिए अनुमति देने के लिए एक्सएमएल पथ के लिए लगता है का उपयोग करना (विशेष रूप से एक बार एसक्यूएल लंबा है)।

इस मामले में:

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') 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^