SQL Server 2005 dla Explicit XML - Need help formatowania

głosy
8

Mam tabeli o strukturze jak poniżej:

------------------------------
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:

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

Do tej pory, szukałem w dokumentacji na stronie MSDN , ale I już nie wyjdzie z pożądanych rezultatów.


@KG,

Pozdrawiam dał mi tę moc faktycznie:

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

Mam zamiar trzymać się FOR XML EXPLICITz Chrisem Leon teraz.

Utwórz 05/08/2008 o 21:35
źródło użytkownik
W innych językach...                            


5 odpowiedzi

głosy
1

pró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
Odpowiedział 05/08/2008 o 21:51
źródło użytkownik

głosy
0
SELECT 1 jako znacznika
       null jako rodzic,
       ACCOUNTNUMBER jako 'ClientID! 1 !! element'
Z Location.LocationMDAccount
GDZIE locationid = 'długo guid-tu'
FOR XML JAWNE, korzeń ( 'root')
Odpowiedział 31/10/2011 o 12:28
źródło użytkownik

głosy
0

Korzystanie z SQL Server 2005 (lub 2008) 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');
Odpowiedział 17/08/2008 o 07:45
źródło użytkownik

głosy
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
Odpowiedział 05/08/2008 o 21:53
źródło użytkownik

głosy
0

Spróbuj tego, Chris:

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

STRASZNIE PRZEPRASZAM! I miesza się czego prosi. Wolę AUTO XML dla ułatwienia maintainance, ale wierzę, że jeden z nich jest skuteczna. Przepraszam za nadzór ;-)

Odpowiedział 05/08/2008 o 21:53
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more