Использование xml.modify для вставки параметров в определенный элемент столбца xml

Я хотел бы использовать хранимую процедуру для вставки некоторых значений, переданных в качестве параметров, в элементы XML столбца. У меня так пока есть следующие параметры:

@profile_id int,
@user_id nvarchar(50),
@activity_name nvarchar(50),
@display_name nvarchar(50)

Получить желаемый XML:

DECLARE @profiles_xml xml
SET @profiles_xml = (SELECT profiles from tbl_applied_profiles WHERE profiles.value('(Profile/ID)[1]','int')= @profile_id)

XML из столбца внутри @profiles_xml выглядит следующим образом:


  20
  
    BC4A18CA-AFB5-4268-BDA9-C990DAFE7783
    somename
    
      
         activity1
      
    
  

Попытайтесь вставить в пользователя с определенным идентификатором имя действия и отображаемое имя:

SET @profiles_xml.modify('
    insert
    if(/Profile/User/ID=sql:variable("@user_id"))
    then Activity[Name=sql:variable("@activity_name")][DisplayName=sql:variable("@display_name")]
    else()
    as first
    into (/Profile/User/Activities)[1]')

Я также попробовал это безуспешно:

 SET @devices_xml.modify('
    insert /Profile/User[ID=sql:variable("@user_id")]/Activity[Name=sql:variable("@activity_name")][DisplayName=sql:variable("@display_name")]
    into (/Profile/User/Activities)[1]')

И это:

 SET @devices_xml.modify('
insert
 /Profile/User[ID=sql:variable("@user_id")]/Activities/Activity[Name=sql:variable("@activity_name")][DisplayName=sql:variable("@display_name")]
    into (/Profile/User/Activities)[1]')

Как правильно это сделать?

Ответы на вопрос(3)

Ваш ответ на вопрос