Использование 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]')
Как правильно это сделать?