在SQL Server中使用XML更新
问题描述:
我正在尝试使用xml更新表。在SQL Server中使用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>
<picture>
<pictureId>30</pictureId>
<Sequence>4</Sequence>
</picture>
<picture>
<pictureId>31</pictureId>
<Sequence>4</Sequence>
</picture>
</pictures>
我得到的错误信息是
操作数类型冲突:XML是与诠释
它不兼容有道理,因为在
pic.PictureId=T.c.query('pictureId')
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片段<Sequence>4</Sequence>
添加到您的列Sequence
- 或者您是否也想在那里使用.value()
方法!