Translate

Friday, November 15, 2013

Use XQuery to replace Xml element value

DECLARE @newVal varchar(50);
SELECT @newVal = 'A40AA80B-74D3-4357-961E-1A4C9E94651F';
-- Get xml contents
DECLARE @myDoc xml = (SELECT [DATA_XML] FROM [dbo].[TABLE] WHERE ([GUID] = @newVal));

-- Check contents
SELECT @myDoc

-- Replace value of
SET @myDoc.modify('delete (/root/RecordGuid[1])')
SET @myDoc.modify('insert {sql:variable("@newVal")} as first into (/root)[1] ') ;

-- Update record
UPDATE [iMARTDB].[dbo].[TABLE]
SET [DATA_XML] = @myDoc
WHERE ([GUID] = @newVal);

-- Verify
SELECT [DATA_XML] FROM [dbo].[TABLE] WHERE ([GUID] = @newVal);