Sql server 在SQL Server中使用XML进行更新
我正在尝试使用xml更新表Sql server 在SQL Server中使用XML进行更新,sql-server,xml,sql-server-2008,Sql Server,Xml,Sql Server 2008,我正在尝试使用xml更新表 UPDATE dbo.M_Picture SET Sequence = T.c.query('Sequence') FROM dbo.M_Picture pic INNER JOIN @xml.nodes('/pictures/picture') T(c) ON pic.PictureId = T.c.query('pictureId') --I guess issue is in this line 我使用的XML是 <pictures> <
UPDATE dbo.M_Picture
SET Sequence = T.c.query('Sequence')
FROM dbo.M_Picture pic
INNER JOIN @xml.nodes('/pictures/picture') T(c)
ON pic.PictureId = T.c.query('pictureId') --I guess issue is in this line
我使用的XML是
<pictures>
<picture>
<pictureId>30</pictureId>
<Sequence>4</Sequence>
</picture>
<picture>
<pictureId>31</pictureId>
<Sequence>4</Sequence>
</picture>
</pictures>
pictureId
是int
如何解决这个问题?试试这个:
UPDATE dbo.M_Picture
SET Sequence = T.c.query('Sequence') -- this here *also* assign an XML fragment to "Sequence"
FROM dbo.M_Picture pic
INNER JOIN @xml.nodes('/pictures/picture') T(c)
ON pic.PictureId = T.c.value('(pictureId)[1]', 'int')
对XML使用.value()
方法,该方法返回标量类型(如int
)
另外:我不确定您是否真的要将XML片段4
分配给您的列Sequence
——或者是否也要在那里使用.value()
方法
UPDATE dbo.M_Picture
SET Sequence = T.c.query('Sequence') -- this here *also* assign an XML fragment to "Sequence"
FROM dbo.M_Picture pic
INNER JOIN @xml.nodes('/pictures/picture') T(c)
ON pic.PictureId = T.c.value('(pictureId)[1]', 'int')