我需要元素的名称也是一个变量(是程序的参数)
而不是这个,哪个工作正常:
DECLARE @VAR VARCHAR(5)
SET @VAR = 'false'
UPDATE CURVES
SET CURVEENTITY.modify(
'replace value of (/ElementName/text())[1] with sql:variable("@VAR")')
WHERE ID = 3
Run Code Online (Sandbox Code Playgroud)
但我想要这样的事情:
DECLARE @VAR VARCHAR(5)
DECLARE @VAR2 VARCHAR(20)
SET @VAR = 'false'
SET @VAR2 = 'ElementName'
UPDATE CURVES
SET CURVEENTITY.modify(
'replace value of (/sql:variable("@VAR2")/text())[1] with sql:variable("@VAR")')
WHERE ID = 3
Run Code Online (Sandbox Code Playgroud)
但它不起作用!我怎样才能做到这一点?
您可以local-name()在谓词中使用以查找要修改的节点.
declare @var2 varchar(50) = 'ElementName'
declare @var varchar(50) = 'false'
update CURVES
set CURVEENTITY.modify('replace value of ((*[local-name() = sql:variable("@var2")]/text())[1])
with sql:variable("@var")')
where ID = 3
Run Code Online (Sandbox Code Playgroud)