0

我有一个表,其中有一个名为“ServiceConfig”的列,数据类型为 xml。

我有如下 xml 记录:

<Config>
  <services>
    <service name="pro" />
    <service name="postdata" />
  </services>
</Config>

现在,我想<service name="pro" /><service name="pro" username="u" password="p"/>. 所以生成的 XML 将是

<Config>
  <services>
    <service name="pro" username="u" password="p"/>
    <service name="postdata" />
  </services>
</Config>

我如何实现它?

4

1 回答 1

2

一种方法是添加这样的新属性......

DECLARE @xmltest TABLE (ServiceConfig XML)
DECLARE @username VARCHAR(15) = 'u'
DECLARE @password VARCHAR(15) = 'p'
DECLARE @xml xml

INSERT @xmlTest values ('<Config>
                           <services>
                             <service name="pro" />
                             <service name="postdata" />
                           </services>
                         </Config>')

SELECT @xml = ServiceConfig from @xmltest

SET @xml.modify('insert (attribute username {sql:variable("@username")}, 
                         attribute password {sql:variable("@password")}) 
                         as last into (/Config/services/service)[1]')

UPDATE @xmltest SET ServiceConfig = @xml

SELECT * FROM @xmltest

单击此处转到上述代码的 SQL Fiddle 演示

于 2013-05-21T11:15:33.890 回答