5

我有一个包含字段 id(int) 和 XmlField(xml) 的表(我们称她为 t)。

我尝试在一个查询中添加多个节点,但无论我尝试什么,我都会不断出错。

查询是:

update t 
set XmlField.modify('insert <f1>value here</f1><f2>value there</f2> into (/xmldoc)') 

我得到了错误:

XQuery [t.XmlField.modify()]:'' 附近的语法错误,预期为 'as'、'into'、'before' 或 'after'。

当我尝试仅添加一个 xml 节点时,它正在工作(示例):

update t set XmlField.modify('insert <f1>value here</f1> into (/xmldoc)') 

当我尝试添加这样的嵌套节点时,它也可以工作:

update t set XmlField.modify('insert <f><f1>value here</f1><f2>value there</f2></f> into (/xmldoc)') 

有没有办法让它发生?

4

1 回答 1

6

SQL Server 文档确实非常清楚地表明该语句insert可以处理多个节点。所以我的猜测是你的问题只是一个语法错误。(Microsoft 语法与XQuery Update Facility 规范中定义的语法略有不同,但可以识别出相似。)

我会尝试将元素 f1 和 f2 制作成一个序列并将它们包装在括号中(规范在这里需要一个 ExprSingle,这意味着不允许使用顶级逗号):

update t 
set XmlField.modify(
  'insert (<f1>value here</f1>, <f2>value there</f2>) into (/xmldoc)') 

(未针对 SQL Server 进行测试。)

于 2013-06-03T16:44:40.153 回答