在单个查询中将多个节点插入xml字段

Dav*_*vid 5 sql-server xquery sql-server-2008

我有一个表(让我们称之为t),其中包含字段id(int)和XmlField(xml).

我尝试在一个查询中添加多个节点,但无论我尝试了什么,我都会遇到错误.

查询是:

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

我收到错误:

XQuery [t.XmlField.modify()]:''之前的语法错误,''在'之后','之前'或'之后'''.

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

update t set XmlField.modify('insert <f1>value here</f1> into (/xmldoc)') 
Run Code Online (Sandbox Code Playgroud)

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

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

有没有办法让它成真?

C. *_*een 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)') 
Run Code Online (Sandbox Code Playgroud)

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