2009-04-28 14 views
5

Ho una colonna in SQL Server 2005 che memorizza un blocco semplice di XML. In un secondo momento viene eseguita l'elaborazione e ho bisogno di unire alcune informazioni di elaborazione nell'XML.Come aggiungere/unire XML aggiuntivo a un campo XML esistente in SQL Server 2005

Anche se posso fare questo in un punto intermedio io preferirei di gran lunga mantenere questo metodo centraliazed all'interno della stored procedure che si occupa di aggiornare gli altri campi di post-elaborazione.

Here's an example del XML sto iniziando con e il tipo di risultato che vorrei realizzare. Qualcuno può fornirmi qualche SQL approssimativo per raggiungerlo?

Aggiornamento: finalmente capito! Pubblicherò la soluzione completa quando ne avrò la possibilità, è stato abbastanza di un hack che qualcun altro si spera trovandolo utile

Tutto finito! Alla fine ho avuto un paio di requisiti aggiuntivi che mi hanno richiesto di rielaborare la soluzione suggerita da Marc e di eliminare completamente la funzione .modify(); comunque la sua risposta mi ha permesso di superare i miei ostacoli iniziali e mi ha portato dove potrei fare un passo indietro e individuare l'approccio più facile. Here's my final solution!

+0

NO: il DML di SQL XML di modifica è disponibile anche in SQL Server 2005! –

+1

Tuttavia, è necessario essere estremamente attenti con il proprio involucro! Il metodo è chiamato "modifica" (tutte minuscole) - * NON * "Modifica". –

+0

Ahh! Red-Gate SQL Prompt è automaticamente in maiuscolo. MrGreen SHIGGITY! :-D – STW

risposta

5

ne dite di questo:

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

Che dovrebbe farlo.

Per ulteriori dettagli su come gestire XML in SQL Server 2005 e versioni successive, torno sempre allo this article at 15 seconds che mostra in modo molto preciso come inserire, modificare ed eliminare frammenti XML all'interno dei campi del server SQL, utilizzando istruzioni DML XML .

Marc

+0

grande legame :-) ma purtroppo sembra che la modifica() funzione non è supportata da SQL Server 2005 – STW

+0

Certo è supportato in SQL Server 2005, io uso quasi tutti da y .... cosa ti fa dire che ?? –

+1

Link è morto. (Finisco solo su CodeGuru.com) – Vaccano

Problemi correlati