Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 General SQL Server Forums
 New to SQL Server Programming
 Update xml

Author  Topic 

rama.nelluru
Starting Member

37 Posts

Posted - 2011-06-01 : 14:18:50
I need to update xml column;

user table

userid logon

1 abc@abc.com

2 bcd@abc.com

I have other wflow table which containd xmlcolumn data look like

<Parameters>
<param name="id">8d878c4d-5376-4763-b27e-4c55e27270fc</param>
<param name="sequence">1</param>
<param name="logon">abc@abc.com</param>
</Parameters>


2 nd row data looks like

<Parameters>
<param name="id">8d878c4d-5376-4763-b27e-4c55e27270fc</param>
<param name="sequence">1</param>
<param name="logon">bcd@abc.com</param>
</Parameters>


i need script that updates these xmlcol rows by taking logon fron the xmlcol and joining with user table column and adding the corresponding userid to the xmlcol

and output loks like

<Parameters>
<param name="id">8d878c4d-5376-4763-b27e-4c55e27270fc</param>
<param name="sequence">1</param>
<param name="logon">abc@abc.com</param>
<param name="userid>1</param>
</Parameters

<Parameters>
<param name="id">8d878c4d-5376-4763-b27e-4c55e27270fc</param>
<param name="sequence">1</param>
<param name="logon">bcd@abc.com</param>
<param name="userid>2</param>
</Parameter>

Please any help ..




RAM

edit: moved to proper forum

sunitabeck
Master Smack Fu Yak Hacker

5155 Posts

Posted - 2011-06-01 : 17:40:25
May be this?

CREATE TABLE #userTable (userid INT, logon VARCHAR(255));
CREATE TABLE #wFlo (x XML);

INSERT INTO #userTable VALUES ('1','abc@abc.com'),('2','bcd@abc.com');
INSERT INTO #wFlo VALUES (
'<Parameters>
<param name="id">8d878c4d-5376-4763-b27e-4c55e27270fc</param>
<param name="sequence">1</param>
<param name="logon">abc@abc.com</param>
</Parameters>'
),
(
'<Parameters>
<param name="id">8d878c4d-5376-4763-b27e-4c55e27270fc</param>
<param name="sequence">1</param>
<param name="logon">bcd@abc.com</param>
</Parameters>'
);

WITH a AS
(
SELECT x,x.value('(//param[@name="logon"])[1]','varchar(255)') AS logon
FROM #wFlo
)
UPDATE A
SET x.modify('insert <param name="userid">{sql:column("u.userid")}</param> as last into (/Parameters)[1]')
FROM A INNER JOIN #userTable u ON u.logon = a.logon;

SELECT * FROM #wFlo;

DROP table #userTable;
DROP table #wFlo
Go to Top of Page
   

- Advertisement -