【问题标题】:Can't modify XML node's value in T-SQL (ms sql)无法在 T-SQL (ms sql) 中修改 XML 节点的值
【发布时间】:2012-09-12 08:50:22
【问题描述】:

我想在 mssql 中修改我的 xml 的节点值,但我的方法似乎不起作用。

这是一个 xml 示例:

<xml>
  <ProjectManager>
    <People>
      <DisplayNames>John Smith</DisplayNames>
      <LoginNames>ABC\jsmith</LoginNames>
    </People>
  </ProjectManager>
</xml>

我的功能部分:

CREATE FUNCTION [dbo].[MyFunc](
    @properties xml, 
    @key nvarchar(50),
    @newvalue nvarchar(max), 
    @datatype nvarchar(50) = null,
    @node nvarchar(50) = null) 
    RETURNS xml
WITH SCHEMABINDING
AS BEGIN 
    DECLARE @temp XML = @properties

    IF LOWER(@datatype) = 'people' 
        SET @temp.modify('replace value of (/xml/*[local-name() = sql:variable("@key")][1]/People/*[local-name() = sql:variable("@node")]/text())[1] with sql:variable("@newvalue")')

RETURN @temp;
END

调用函数:

set @result = dbo.MyFunc(@myXML,'ProjectManager','Somebody','People','DisplayName')

【问题讨论】:

    标签: xml tsql xml-dml


    【解决方案1】:

    DisplayName 在您的 XML 中是复数形式。

    使用

    set @result = dbo.MyFunc(@myXML,'ProjectManager','Somebody','People','DisplayNames')
    

    【讨论】:

      猜你喜欢
      • 2018-08-24
      • 1970-01-01
      • 2017-05-31
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多