gpt4 book ai didi

sql - 对从表 : Must be single node 检索到的 XML 数据使用修改和插入时出错

转载 作者:数据小太阳 更新时间:2023-10-29 02:22:20 25 4
gpt4 key购买 nike

我正在尝试插入一些我从表中的列中检索的 xml。我按如下方式检索它:

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

生成的 xml 如下所示:

<Profile>
<ID>16</ID>
<User>
<ID>BC4A18CA-AFB5-4268-BDA9-C990DAFE7783</ID>
<Name>test</Name>
<Activities />
</User>
</Profile>

但是当我尝试像这样插入一个元素时:

SET @devices_xml.modify('insert <Activity><Name>testname</Name></Activity>
as first into (Profiles/User/Activities[1])')

我收到以下错误:

XQuery [modify()]: The target of 'insert' must be a single node, found 'element(Activities,xdt:untyped) *'

我不明白为什么会出错,因为当前只有一个 Activities 元素。

最佳答案

你有两个小错误:

  • 顶级 XML 节点是 <Profile> - 但你有 Profiles在您的插入 XQuery 中
  • 即使您的集合可能没有条目或只有一个条目 - 您指定的 XPath 可能 可能返回多个节点 - 因此您需要明确告诉它获取这些节点中的第一个.在这里,你有 [1]索引器在错误的位置(在结束 ) 内)。

试试这个 XQuery:

SET @devices_xml.modify('insert <Activity><Name>testname</Name></Activity>
as first into (Profile/User/Activities)[1]')

至少在我的例子中,这会返回:

<Profile>
<ID>16</ID>
<User>
<ID>BC4A18CA-AFB5-4268-BDA9-C990DAFE7783</ID>
<Name>test</Name>
<Activities>
<Activity>
<Name>testname</Name>
</Activity>
</Activities>
</User>
</Profile>

关于sql - 对从表 : Must be single node 检索到的 XML 数据使用修改和插入时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13225619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com