在sql中向xml的现有节点添加值

时间:2015-08-12 09:44:01

标签: sql-server xml

我使用的是SQL Server 2008 R2,我的存储过程采用了一个带有多个级别的结构化xml参数。

DECLARE @XML_Account XML=
<Accounts>
    <Account>
        <NameID></NameID>
        <AID></AID>
        <TransactionTime></TransactionTime>
        <TransactionEndTime></TransactionEndTime>
        <TrasactionName></TrasactionName>
        <Purchases>
            <Purchase>
                <Name></Name>
                <Qty></Qty>
                <Cost></Cost>
                <Tax1></Tax1>
                <Tax2></Tax2>
                <Tax3></Tax3>
                <Tax4></Tax4>
            </Purchase>
           <Purchase>
                <Name></Name>
                <Qty></Qty>
                <Cost></Cost>
                <Tax1></Tax1>
                <Tax2></Tax2>
                <Tax3></Tax3>
                <Tax4></Tax4>
            </Purchase>
        </Purchases>
        <Error></Error>
    </Account>
</Accounts>

现在我想将值添加到错误节点,如<Error>please check error</Error> 并返回xml参数

1 个答案:

答案 0 :(得分:2)

首先,删除空节点(因为它无法替换):

SET @XML_Account.modify('delete (Accounts/Account/Error)[1]')

然后,添加您的错误:

SET @XML_Account.modify('insert <Error>please check error</Error> as last into (Accounts/Account)[1]')

在许多节点中设置错误以使用REPLACE的最简单方法:

SET @XML_Account = REPLACE(CONVERT(nvarchar(max), @XML_Account), N'<Error/>',N'<Error>please check error</Error>')