1

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はintと互換性がありません

そしてそれは理にかなっています

pic.PictureId=T.c.query('pictureId')

pictureIdint

これを整理する方法は?

4

1 に答える 1

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()ん!

于 2012-07-22T19:57:20.610 に答える