2009-04-28 13 views
5

Tengo una columna en SQL Server 2005 que almacena un simple fragmento de XML. En un punto posterior, se realiza el procesamiento y necesito fusionar cierta información de procesamiento en el XML.Cómo agrego/fusiono XML adicional en un campo XML existente en SQL Server 2005

Si bien puedo hacer esto en un punto intermedio, preferiría mantener este método centralizado dentro del procedimiento almacenado que es responsable de actualizar otros campos posteriores al procesamiento.

Here's an example del XML que estoy comenzando y el tipo de resultado que me gustaría lograr. ¿Alguien puede proporcionarme un poco de SQL para lograrlo?

Actualización: ¡Finalmente lo tengo! Voy a publicar la solución completa cuando tenga la oportunidad, fue suficiente hackear que alguien más con suerte lo encontrará útil

¡Todo terminado! Al final tuve un par de requisitos adicionales que me requirieron volver a trabajar la solución sugerida de Marc y descartar completamente la función .modify(); sin embargo, su respuesta me permitió superar mis obstáculos iniciales y me llevó a donde podía dar un paso atrás y detectar el enfoque más fácil. Here's my final solution!

+0

NO - ¡la modificación SQL XML DML también está disponible en SQL Server 2005! –

+1

¡Sin embargo, debe ser EXTREMADAMENTE cuidadoso con su carcasa! El método se llama "modificar" (en minúsculas) - * NO * "Modificar". –

+0

¡Ahh! Red-Gate SQL Prompt es automáticamente mayúscula. :-D SHIGGITY! :-D – STW

Respuesta

5

¿Qué tal esto:

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

Eso debería hacerlo.

Para más detalles sobre cómo tratar con XML en SQL Server 2005 y versiones posteriores, sigo volviendo al this article at 15 seconds que muestra muy bien cómo insertar, modificar y eliminar fragmentos XML dentro de los campos de su servidor SQL, utilizando declaraciones XML DML .

Marc

+0

Excelente enlace :-) pero desafortunadamente parece que la función Modify() no es compatible con SQL Server 2005 – STW

+0

¡Claro que es compatible con SQL Server 2005! Lo uso casi todos los días y ... ¿qué te hace decir eso? –

+1

El enlace está muerto. (Acabo de terminar en CodeGuru.com) – Vaccano

Cuestiones relacionadas