2009-04-28 5 views
5

J'ai une colonne dans SQL Server 2005 qui stocke un morceau simple de XML. À un stade ultérieur, le traitement est effectué et j'ai besoin de fusionner certaines informations de traitement dans le fichier XML. Bien que je puisse le faire à un point intermédiaire, je préférerais de beaucoup garder cette méthode centralisée dans la procédure stockée qui est responsable de la mise à jour des autres champs post-traitement.Comment ajouter/fusionner XML supplémentaire dans un champ XML existant dans SQL Server 2005

Here's an example du XML que je commence et le type de résultat que j'aimerais atteindre. Quelqu'un peut-il me fournir un SQL approximatif pour y parvenir?

Mise à jour: Enfin obtenu! Je posterai la solution complète quand j'en aurai l'occasion, c'était assez d'un hack pour que quelqu'un d'autre le trouve utile

Tout est terminé! Au final, j'avais quelques exigences supplémentaires qui m'obligeaient à retravailler la solution suggérée par Marc et à abandonner complètement la fonction .modify(); Cependant, sa réponse m'a permis de surmonter mes premiers obstacles et m'a permis d'aller plus loin et de repérer l'approche la plus facile. Here's my final solution!

+0

NO - le DML SQL XML de modification est également disponible dans SQL Server 2005! –

+1

Vous devez être extrêmement prudent avec votre boîtier, cependant! La méthode est appelée "modifier" (tout en minuscules) - * NOT * "Modifier". –

+0

Ahh! Red-Gate SQL Prompt l'enveloppe automatiquement automatiquement. :-D SHIGGITY! :-D – STW

Répondre

5

Que diriez-vous ceci:

update yourTable 
set (your XML column).modify('insert <processingData id="guid" someAttrib="x" /> as last into /someData[1]') 
where ....... 

Cela devrait le faire. Pour plus de détails sur la gestion de XML dans SQL Server 2005 et les versions ultérieures, je reviens à this article at 15 seconds qui montre très bien comment insérer, modifier et supprimer des fragments XML dans vos champs de serveur SQL, en utilisant des instructions XML DML .

Marc

+0

Great link :-) mais malheureusement, il semble que la fonction Modify() n'est pas supportée par SQL Server 2005 – STW

+0

Bien sûr, il est pris en charge dans SQL Server 2005! Je l'utilise presque tous les jours y .... qu'est-ce qui te fait dire ça ?? –

+1

Le lien est mort. (Je viens de finir à CodeGuru.com) – Vaccano

Questions connexes