Re: How can I replace a value in xml with .modify from the variable?
- From: "Denis Ruckebusch [MSFT]" <denisruc@xxxxxxxxxxxxxxxxxxxx>
- Date: Mon, 20 Nov 2006 16:34:24 -0800
Well you must always use a string literal in the modify method but you can have access to the values in sql columns or sql variables through the use of sql:column() and sql:variable() in your XQuery.
I would suggest that you read about it in Books Online, but here's a quick example. You can replace the value of your ConversationHandle attribute with the value from a sql variable named @handle like this
declare @xml xml, @handle char(36)
set @xml= '<Tasks><row ConversationHandle="" olnID="5981"/></Tasks>'
SET @handle = newid()
SET @xml.modify('
replace value of (/Tasks/row/@ConversationHandle)[1]
with sql:variable("@handle")
')
I hope this helps
Denis Ruckebusch
--
This posting is provided "AS IS" with no warranties, and confers no rights.
Use of included script samples are subject to the terms specified at http://www.microsoft.com/info/cpyright.htm
"Farmer" <someone@xxxxxxxxxxxxx> wrote in message news:%23RAddk3AHHA.4428@xxxxxxxxxxxxxxxxxxxxxxx
Thanks for your help.
I am trying to modify a value within an xml. I found that this can be done with .modify but I must use literal for modify command. I need it variablized. Is there any way to do it without sp_executesql?
thanks
declare
@xml varchar(max)
,@xml1 xml
, @ConversationHandle char(36)
set @xml= '<Tasks><row ConversationHandle="" olnID="5981"/></Tasks>'
SET @xml1 = @xml
SET @ConversationHandle = newid()
This is what I want but using the xml .modify function
select cast(@xml as xml), cast(REPLACE( @xml, 'ConversationHandle=""', 'ConversationHandle="' + @ConversationHandle + '"') as xml)
SET @xml1.modify('
replace value of (/Tasks/row/@ConversationHandle)[1]
with "boo"
')
SELECT @xml1
DECLARE @m varchar(1000)
SET @m ='
replace value of (/Tasks/row/@ConversationHandle)[1]
with "' + cast(@ConversationHandle as char(36)) + '"'
SET @xml1.modify(@m) -- this errors
SELECT @xml1
- References:
- Prev by Date: Re: Time Zone in xsd:date
- Next by Date: Re: Problem between SQL Server 2000 and 2005
- Previous by thread: Re: How can I replace a value in xml with .modify from the variable?
- Next by thread: RE: How can I replace a value in xml with .modify from the variable?
- Index(es):
Relevant Pages
|