【发布时间】:2017-04-07 02:46:21
【问题描述】:
我想在以下 OPENXML 语句中更新一个表,但不知道将语法作为 UPDATE、FROM 和 WHERE 放在哪里。
我使用 OPENXML 语句得到了一个不错的结果集,但是如何使用它更新表?
DECLARE @x xml
SELECT @x=R
FROM OPENROWSET (BULK 'C:\Users\ronal\Dropbox\Projecten\Voormelden Portbase\20161021095457591.xml', SINGLE_BLOB) AS XMLPortbase(R)
DECLARE @hdoc int
EXEC sp_xml_preparedocument @hdoc OUTPUT, @x
UPDATE [COMTECdefault].[dbo].[voormelden]
SET
Tarcode = '12345678'
FROM OPENXML (@hdoc, '/StandardBusinessDocument/documentContent/contentBody/Acknowledgement/messageStatus',3)
WITH (
previousContentReference varchar(50) '../../../previousContentHeader/contentReference',
messageAcceptanceCode varchar(50) '../messageAcceptanceCode',
timeslotReference varchar(50) '../timeslotReference',
offeredArrivalDateTime DateTime '../offeredArrivalDateTime',
offeredDepartureDateTime DateTime '../offeredDepartureDateTime',
messageStatusCode varchar(255),
messageStatusDescription varchar(255),
additionalStatusRemarks varchar(255),
containerPrefixAndNumber varchar(50) '../containerPrefixAndNumber'
)
WHERE ID = previousContentReference
EXEC sp_xml_removedocument @hdoc
【问题讨论】:
-
FROM OPENXML附带的准备和删除文档的程序已过时。最好使用 real XML 方法.value()、.nodes()、query()、.exist()和.modify()。请发布您的 XML 的(简化)示例以帮助您。 -
嗨罗纳德!由于您是新来的(顺便说一句:欢迎!)请给我一个提示:这个问题解决了吗?您需要进一步的帮助吗?请给我一个提示:如果这个问题得到了解决,您将非常好心,在(最佳)答案的投票计数器下方勾选接受检查。这将 1) 将此问题标记为已解决 2) 让追随者更容易找到最佳解决方案 3) 向回答者支付积分和 4) 向您支付积分。一旦您自己越过了 15 点边界,您还被要求对贡献进行投票。这是说谢谢的方式。编码快乐!
标签: sql sql-server xml tsql sql-server-2012