在Sql Server的xml中向第n个元素插入一个元素

ruy*_*uya 3 xml sql sql-server xquery

请考虑这个XML:

<Employees>
    <Person>
        <ID>1000</ID>
        <Name>Nima</Name>
        <LName>Agha</LName>
    </Person>
    <Person>
        <ID>1001</ID>
        <Name>Ligha</Name>
        <LName>Ligha</LName>
    </Person>
    <Person>
        <ID>1002</ID>
        <Name>Jigha</Name>
        <LName>Jigha</LName>
    </Person>
    <Person>
        <ID>1003</ID>
        <Name>Aba</Name>
        <LName>Aba</LName>
    </Person>
</Employees>
Run Code Online (Sandbox Code Playgroud)

我想编写一个获取数字的过程,然后我将元素插入第n个Person元素.例如,如果1传递给我的程序,我将元素插入第一个人元素.

Qua*_*noi 6

DECLARE @data XML =
'
<Employees>
    <Person>
        <ID>1000</ID>
        <Name>Nima</Name>
        <LName>Agha</LName>
    </Person>
    <Person>
        <ID>1001</ID>
        <Name>Ligha</Name>
        <LName>Ligha</LName>
    </Person>
    <Person>
        <ID>1002</ID>
        <Name>Jigha</Name>
        <LName>Jigha</LName>
    </Person>
    <Person>
        <ID>1003</ID>
        <Name>Aba</Name>
        <LName>Aba</LName>
    </Person>
</Employees>
'

DECLARE @offset INT = 2
DECLARE @value VARCHAR(100) = 'newvalue'

SET @data.modify('insert <NewAttribute>{sql:variable("@value")}</NewAttribute> as last into (/Employees/Person)[sql:variable("@offset")][1]')

SELECT @data
Run Code Online (Sandbox Code Playgroud)