我有一个 xml 格式的消息列表,我想使用 OpenXML 将消息 ID 发送到存储过程,将它们的状态更新为“A”状态。您可以在此处查看编码,如下所示:
XML 样本格式:
<Message>
<MessageID>17</MessageID>
<MessageID>16</MessageID>
<MessageID>15</MessageID>
</Message>
在存储过程中:
exec sp_xml_preparedocument @idoc OUTPUT, @XmlMessagesItems
方式一:
UPDATE SECMSG_TO
SET SECMSG_TO.Status='A'
FROM OPENXML (@idoc, '/Message',2)
with ( MessageID INT) ox
WHERE
SECMSG_TO.MessageID = ox.MessageID
或方式2:
UPDATE SECMSG_TO
SET SECMSG_TO.Status = 'A'
WHERE SECMSG_TO.MessageID IN (SELECT *
FROM OPENXML (@idoc, '/Message',2)
WITH ( MessageID INT)
)
但是通过这两种方式,我只能更新第一条消息,这意味着 17 号和其他没有影响。你能给我一个线索,我怎样才能完全更新所有列表。
谢谢。