Am un tabel cu o structură cum ar fi:
------------------------------
LocationID | AccountNumber
------------------------------
long-guid-here | 12345
long-guid-here | 54321
Pentru a trece într-o altă procedură stocată, am nevoie ca XML să arate astfel:
12345
54321
Cel mai bun lucru pe care l-am putut face până acum a fost să-l cumpăr:
Folosesc această instrucțiune SQL:
SELECT
1 as tag,
null as parent,
AccountNumber as 'root!1!clientID'
FROM
Location.LocationMDAccount
WHERE
locationid = 'long-guid-here'
FOR XML EXPLICIT
Până în prezent, am analizat documentația privind pagina MSDN , dar nu am ieșit cu rezultatele dorite.
@KG,
Al tău mi-a dat de fapt această ieșire:
10705
Am de gând să rămân cu FOR XML EXPLICIT
de la Chris Leon deocamdată.
încerca
SELECT
1 AS Tag,
0 AS Parent,
AccountNumber AS [Root!1!AccountNumber!element]
FROM
Location.LocationMDAccount
WHERE
LocationID = 'long-guid-here'
FOR XML EXPLICIT
Încearcă asta, Chris:
SELECT
AccountNumber as [clientId]
FROM
Location.Location root
WHERE
LocationId = 'long-guid-here'
FOR
XML AUTO, ELEMENTS
IMI PARE FOARTE RAU! Am amestecat ceea ce cereai. Prefer preferința XML AUTO doar pentru ușurința de întreținere, dar cred că una dintre ele este eficientă. Imi cer scuze pentru supravegherea ;-)
M-am prins cu:
select
1 as tag,
null as parent,
AccountNumber as 'root!1!clientID!element'
from
Location.LocationMDAccount
where
locationid = 'long-guid-here'
for xml explicit
Folosind SQL Server 2005 (sau probabil 2008) găsesc pentru XML PATH pentru a permite mult mai ușor de întreținut SQL decât pentru XML Explicit (mai ales când SQL este mai lung).
În acest caz:
SELECT AccountNumber as "clientID"
FROM Location.LocationMDAccount
WHERE locationid = 'long-guid-here'
FOR XML PATH (''), Root ('root');