SQL Server 2005 για XML Ρητή - Ανάγκη διαμόρφωσης βοήθεια

ψήφοι
8

Έχω ένα τραπέζι με μια δομή όπως τα ακόλουθα:

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

Για να περάσει σε ένα άλλο αποθηκευμένη διαδικασία, χρειάζομαι την XML για να μοιάζει κάπως έτσι:

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

Το καλύτερο που έχω ήταν σε θέση να το πράξει τώρα ήταν να πάρει την εξής μορφή:

<root clientID=10705/>

Είμαι χρησιμοποιώντας αυτή τη δήλωση SQL:

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

Μέχρι στιγμής, έχω κοίταξε την τεκμηρίωση σχετικά με την σελίδα MSDN , αλλά δεν έχω βγει με τα επιθυμητά αποτελέσματα.


@ΚΙΛΟ,

Δικός σου μου έδωσε αυτήν την έξοδο στην πραγματικότητα:

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

Πάω να κολλήσει με το FOR XML EXPLICITαπό Chris Leon για τώρα.

Δημοσιεύθηκε 05/08/2008 στις 21:35
πηγή χρήστη
Σε άλλες γλώσσες...                            


5 απαντήσεις

ψήφοι
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
Απαντήθηκε 05/08/2008 στις 21:51
πηγή χρήστη

ψήφοι
0
ΕΠΙΛΟΓΗ 1 ως ετικέτα,
       null ως μητρική,
       ACCOUNTNUMBER ως 'clientID! 1 !! στοιχείο'
ΑΠΟ Location.LocationMDAccount
ΟΠΟΥ locationid = 'μακράς guid-εδώ'
ΓΙΑ XML ΡΗΤΗ, ρίζα (root)
Απαντήθηκε 31/10/2011 στις 12:28
πηγή χρήστη

ψήφοι
0

Χρησιμοποιώντας τον SQL Server 2005 (ή μάλλον το 2008) βρίσκω για XML PATH να επιτρέψει πολύ πιο εύκολο να διατηρηθεί SQL ό, τι για XML Ρητή (ιδιαίτερα όταν η SQL είναι μεγαλύτερη).

Σε αυτήν την περίπτωση:

SELECT AccountNumber as "clientID"
FROM Location.LocationMDAccount
WHERE locationid = 'long-guid-here'
FOR XML PATH (''), Root ('root');
Απαντήθηκε 17/08/2008 στις 07:45
πηγή χρήστη

ψήφοι
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
Απαντήθηκε 05/08/2008 στις 21:53
πηγή χρήστη

ψήφοι
0

Δοκιμάστε το, Κρις:

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

ΕΙΛΙΚΡΙΝΑ ΣΥΓΓΝΩΜΗ! Έχω συγχέονται αυτό που ζητούσαν. Προτιμώ το AUTO XML μόνο για την ευκολία της συντήρησης, αλλά πιστεύω ότι είτε το ένα είναι αποτελεσματική. Ζητώ συγγνώμη για την εποπτεία ;-)

Απαντήθηκε 05/08/2008 στις 21:53
πηγή χρήστη

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