2012-07-22 115 views
1

我正在尝试使用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') 

pictureIdint

如何排序了这一点?

回答

2

试试这个:

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()方法!