Проблема с @ParentNodeName и @NodeName; символ @ используется для обозначения переменной в SQL, но он ссылается на атрибут в XML. Метод .modify () пытается вставить строку в корень с цепочкой атрибутов, которая является плохо отформатированным SQL, когда похоже, что вы пытаетесь построить динамический XML-документ. Вам нужно будет создать динамический оператор SQL, который заменит значения @ParentNodeName и @NodeName их значениями из вашей временной таблицы, например:
SET @SQL = ' SET @x.modify
('''
insert attribute status {sql:variable("@status")}
as first
into (/@ParentNodeName/@NodeName/child::*[position()=sql:variable("@status")])[1]
''')
SET @SQL = REPLACE(@SQL, '@ParentNodeName', @ParentNodeName)
SET @SQL = REPLACE(@SQL, '@NodeName', NodeName)
EXEC (@SQL)
тестировалась.