0
是否可以使用邏輯與操作者的XQuery語句存儲過程中刪除元素只有當它的父元素具有特定值,它有一個特定的值?如:使用的邏輯和一個XQuery刪除TSQL
SET @profiles_xml = (SELECT profiles from tbl_applied_profiles WHERE profiles.value('(Profile/ID)[1]','int')= @profile_id)
SET @profiles_xml.modify('
delete
if(/Profile/User/ID=sql:variable("@user_id")) and (/Profile/User/Activities/Activity/Name = sql:variable("@activity_name"))
then (/Profile/User/Activities/Activity)
else()
')
我想刪除的活動,只有當用戶ID元素和活動名稱元素匹配給定的參數。 在profiles_xml的XML看起來是這樣的:
<Profile>
<ID>20</ID>
<User>
<ID>BC4A18CA-AFB5-4268-BDA9-C990DAFE7783</ID>
<Name>somename</Name>
<Activities>
<Activity>
<Name>activity1</Name>
</Activity>
</Activities>
</User>
</Profile>
但將來有可能會在每多個元素的多個元素作爲元素的孩子。
謝謝你的迴應,但我不得不使用 '@user_id爲nvarchar(50)'' 爲nvarchar @activity_name(50)' 所以這將是 'SET @ xml.modify(」 \t刪除/資料/用戶[ID = SQL:可變( 「@ USER_ID」)] /活動/活動/名稱[SQL:可變( 「@ ACTIVITY_NAME」)] \t ')' 正確?但是,當我嘗試,我得到的錯誤: '的XQuery [修改()]:只有單(可選)允許作爲謂詞,發現數字/布爾值或節點*表達式「的xs:字符串?」' – Christian
啊,我發現我有'/活動/活動/名稱[SQL:可變( 「@ ACTIVITY_NAME」)]'當我需要'/活動/活動/名稱= [SQL:可變( 「@ ACTIVITY_NAME」)]'但是現在我收到錯誤: '的XQuery [修改()]:一個表達expected' – Christian
我有更新使用變量名的答案。 –