使用xml.modify插入参数xml列的特定元素
技术问答
62 人阅读
|
0 人回复
|
2023-09-13
|
我想在存储过程中插入一些值作为参数输入列xml到目前为止,我有以下参数:8 `9 D( G2 {2 h' U
@profile_id int,@user_id nvarchar(50),@activity_name nvarchar(50),@display_name nvarchar(50)检索所需的xml:2 w; M$ T8 T8 {6 H& Y- D7 _
DECLARE @profiles_xml xmlSET @profiles_xml = (SELECT profiles from tbl_applied_profiles WHERE profiles.value('(Profile/ID)[1]','int')= @profile_id)@profiles_xml内的列中的xml看上去像这样:
; N) q" X9 e) s2 ^* q; X [I]20[/I] [U] [I]BC4A18CA-AFB5-4268-BDA9-C990DAFE7783[/I] somename activity1 [/U]尝试具体ID插入用户:
$ Y) D& R8 j5 R/ c8 {$ eSET @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]')我也尝试过这种方法,但没有成功:+ N' `' v8 D! u! b
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]')还有这个:
6 @! v. M# ~" W- {1 c 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]')正确的方法是什么?
7 Q% |( s" k; r& V! Q
8 v4 S2 I$ W1 C- |3 L: r, D 解决方案: |
|
|
|
|
|