2013-05-13 15 views
7

Ho una tabella di esempio in SQL Server 2012. Sono in esecuzione alcune query, ma il metodo XQuery .modify() è in esecuzione ma non in fase di aggiornamento.Aggiornamento XML memorizzato in una colonna XML in SQL Server

Ecco la tabella

Xml Table

Per questo solo cercando di aggiornare le impostazioni per 'Newtest'

Xml Snippet

Questo eseguirà ma nulla è l'aggiornamento! Grazie per qualsiasi aiuto!

Not Update Snippet

risposta

7

Poiché non v'è uno spazio dei nomi XML (xmlns:dev="http://www.w3.org/2001/XMLSchema") nel documento XML, è necessario che nel vostro inlcude UPDATE dichiarazione!

Prova questo:

;WITH XMLNAMESPACES(DEFAULT 'http://www.w3.org/2001/XMLSchema') 
UPDATE XmlTable 
SET XmlDocument.modify('replace value of (/Doc/@Settings)[1] with "NewTest"') 
WHERE XmlId = 1 
3

Si dovrebbe dichiarare uno spazio dei nomi nella vostra sintassi aggiornamento .Try la sintassi di seguito

Declare @Sample table 
(xmlCol xml) 

Insert into @Sample 
values 
('<dev:Doc xmlns:dev="http://www.w3.org/2001/XMLSchema" 
         SchemaVersion="0.1" Settings="Testing" Ttile="Ordering"> 
     <Person id="1"> 
      <FirstName>Name</FirstName> 
     </Person> 
     </dev:Doc>') 
Select * from @Sample 
Update @Sample 
SET xmlCol.modify(
        'declare namespace ns="http://www.w3.org/2001/XMLSchema"; 
        replace value of (/ns:Doc/@Settings)[1] 
        with "NewTest"') 

Select * from @Sample 
Problemi correlati