Re: Sql Server 2005 Xml Dml using .modify()
- From: Dan Sullivan <danATpluralsight.com>
- Date: Mon, 10 Jul 2006 21:17:17 +0000 (UTC)
In order to replace the content of an element, the xml must be strongly typed, i.e. must have an xml schema. You can use sql:variable to access a sql variable inside an XQuery expression. Here is an example:
-- schema for your data
CREATE XML SCHEMA COLLECTION A
AS
'<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="SearchPreferenceData">
<xs:complexType>
<xs:sequence>
<xs:element ref="DefaultCountyID"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DefaultCountyID" type="xs:string"/>
</xs:schema>'
DECLARE @id VARCHAR(10)
-- sql variable you want to insert
SET @id = 'abc'
declare @DefaultSearchXml xml(A)
set @DefaultSearchXml = '
<SearchPreferenceData>
<DefaultCountyID>fdsf</DefaultCountyID>
</SearchPreferenceData>'
-- patched up xpath expression
-- and sql:variable
set @DefaultSearchXml.modify('
replace value of (/SearchPreferenceData[1]/DefaultCountyID[1])
with sql:variable("@id")
')
-- check to see if it worked
SELECT @DefaultSearchXml
Dan
declare @DefaultSearchXml xml
set @DefaultSearchXml = '
<SearchPreferenceData>
<DefaultCountyID></DefaultCountyID>
</SearchPreferenceData>'
set @DefaultSearchXml.modify('
replace value of
(/SearchPreferenceData/DefaultCountyID[1]/text())[1]
with "abc"
')
.
- Prev by Date: SQL data to XML
- Next by Date: Re: Sql Server 2005 Xml Dml using .modify()
- Previous by thread: SQL data to XML
- Next by thread: Re: Sql Server 2005 Xml Dml using .modify()
- Index(es):
Loading