I have an untyped XML variable that for example holds the following data:
<Customer>
<FirstName>John</FirstName>
<Address>
<AddressLine1>1 The road</Addressline1>
<AddressLine2>Pinner</Addressline2>
<AddressLine3>London</Addressline3></Address>
<Office>
</Office><Telephone>0208123456789</Telephone>
<Address>
</Address><AddressLine1>1 The road</Addressline1>
<AddressLine2>Pinner</Addressline2>
<AddressLine3>London</Addressline3>
</Customer>
<Customer>
<FirstName>Adam</FirstName>
<Address>
<AddressLine1>19 Another road</Addressline1>
<AddressLine2>Hemel</Addressline2>
<AddressLine3>London</Addressline3></Address>
<Office>
</Office><Telephone>0208123456222</Telephone>
<Address>
</Address><AddressLine1>5 The road</Addressline1>
<AddressLine2>Hatfield</Addressline2>
<AddressLine3>London</Addressline3>
<ExternalId>2</ExternalId>
</Customer>
Using SQL DML and\or XQuery I would like to enumerate the XML elements and add an <ExternalId> element to any <Address> element if one doesn't exist with a value of NewId().
So the end result would be:
<Customer>
<FirstName>John</FirstName>
<Address>
<AddressLine1>1 The road</Addressline1>
<AddressLine2>Pinner</Addressline2>
<AddressLine3>London</Addressline3>
<ExternalId>QW34-122132WE-12334343A</ExternalId></Address>
<Office>
</Office><Telephone>0208123456789</Telephone>
<Address>
</Address><AddressLine1>1 The road</Addressline1>
<AddressLine2>Pinner</Addressline2>
<AddressLine3>London</Addressline3>
<ExternalId>QW34-122132WE-333333</ExternalId>
</Customer>
<Customer>
<FirstName>Adam</FirstName>
<Address>
<AddressLine1>19 Another road</Addressline1>
<AddressLine2>Hemel</Addressline2>
<AddressLine3>London</Addressline3>
<ExternalId>QW34-122132WE-12312312</ExternalId></Address>
<Office>
</Office><Telephone>0208123456222</Telephone>
<Address>
</Address><AddressLine1>5 The road</Addressline1>
<AddressLine2>Hatfield</Addressline2>
<AddressLine3>London</Addressline3>
<ExternalId>2</ExternalId>
</Customer>
Any help would be greatly appreciated.
Regards
Why are you using a unique identifier. Are you familiar with the performance hit that comes with using a unique identifier? I admit there are reasons to want to use a unique identifier and yours may be one of them, but frequently I see unique identifiers used without an understanding of the consequences to performance. Here are some previous threads related to this issue:
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=430995&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1544519&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=304764&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1493312&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1525445&SiteID=1
|||Thanks for the reply.
Perfomance is not an issue in this instance as it will be run once in a blue moon. But thanks for the heads-up on the performance issues. It doesn't have to be NewID() it can be any globally unique number.
Regards
sql
No comments:
Post a Comment