因此,我知道如何在Modify()方法中替换xml元素的元素值。这是例子
TSQL Replace value in XML String
我的问题有点不同。以上面的链接为例...
UPDATE dbo.TFS_Feedback_New
SET Details.modify('
replace value of (/optional/educational/text())[1]
with sql:variable("@updatedEducation")')
WHERE feedbackID = @FBID
我想做的是为“教育”提供价值。换句话说,我想做这样的事情
UPDATE dbo.TFS_Feedback_New
SET Details.modify('
replace value of (/optional/sql:variable("@name")/text())[1]
with sql:variable("@value")')
WHERE feedbackID = @FBID
由于sql:variable("@name")
不支持XQuery语法'/ function()'。
如何将要更新的元素的名称及其值传递给我的storedproc,并让它更新xml列?
答案 0 :(得分:1)
不允许将变量用作XPath
的一部分,但可以使用谓词:
DECLARE @xml XML=
N'<root>
<optional>
<educational>SomeText</educational>
<someOther>blah</someOther>
</optional>
</root>';
-您知道的直接方法:
SET @xml.modify('replace value of (/root/optional/educational/text())[1] with "yeah!"');
SELECT @xml;
-现在,我们使用变量来查找<optional>
下的第一个节点,其名称如下:
DECLARE @ElementName VARCHAR(100)='educational';
SET @xml.modify('replace value of (/root/optional/*[local-name()=sql:variable("@ElementName")]/text())[1] with "yeah again!"');
SELECT @xml;
尝试一下...