【发布时间】:2016-03-22 13:39:51
【问题描述】:
我正在尝试将 XML.modify 函数中的局部变量作为我的 SQL 脚本中的节点传递,因为尝试修改的 xml 是动态的。 见下面的代码
DECLARE
@XML VARCHAR(MAX) = 'ns:Messages/ns:T001.0_NewSPIDRequests/ns:T001.0_NewSPIDRequest/ns:D2009_SWConnectionRef'
;WITH XMLNAMESPACES('urn:bridgeall-com:cmaservice:data:v3' AS ns)
UPDATE XMLMessageFeeder
SET theXML.modify('replace value of (/ns:Submission/*[local-name(.) = sql:variable("@XML")]/text())[1] with ("New Value")')
SELECT theXML
FROM XMLMessageFeeder
我遇到的问题是,如果我将替换设置如下,则上述内容还没有更新该节点的值:
SET theXML.modify
('
replace value of (/ns:Submission/ns:Messages/ns:T001.0_NewSPIDRequests/ns:T001.0_NewSPIDRequest/ns:D2009_SWConnectionRef/text())[1]
with ("New Value")
')
这行得通。据我所知(很少),它们都传递了相同的替换代码,但使用变量似乎不起作用。
有人能指出正确的方向吗?
编辑 答案可以在下面的 cmets 中找到。
【问题讨论】:
标签: sql sql-server xml xsd