日期:2013-01-29 浏览次数:20553 次
XML 数据修正
SQL Server 2005 提供了用于数据修正的结构作为对 XQuery 的一个扩展。子树可以在指定的节点之前或之后插入,或者作为最左边或最左边的子节点插入。此外,子树也可以插入到父节点,在这种情况下,它成为父节点最左边的子节点。属性、元素和文本节点插入都支持。
支持删除子树。在这种情况下,整个子树就从 XML 实例中被移除。
标量值可以用新的标量值进行替换。
例:将子树插入 XML 实例
这个示例显示了 modify() 方法的使用,它将一个新的<section> 元素插入编号为 1 的 元素的左边。
UPDATE docs SET xCol.modify('
insert
<section num="2">
<heading>Background</heading>
</section>
after (/doc/section[@num=1])[1]')
例:将这本书的价格更新为 $49.99
下面的更新语句将 ISBN 为 1-8610-0311-0 的书的<price> 替换为 $49.99。该 XML 实例是通过 XML 架构 http://myBooksinstance 进行类型化的,因此就有了 XML 数据修正语句中的命名空间声明。
UPDATE XmlCatalog
SET Document.modify ('
default namespace = "http://myBooks"
replace value of (/bookstore/book[@ISBN=
"1-8610-0311-0"]/price)[1] with 49.99')
类型检查和静态错误XQuery 引入了类型检查。编译阶段检查 XQuery 表达式和数据修正语句的静态类型正确性,并且将 XML 架构用于类型推理(在类型化 XML 的情况下)。如果表达式在运转时由于类型安全冲突而失败,则会产生静态类型错误。静态错误的例子有:将一个字符串与一个整数相加、在操作需求单值的地方接收一个值序列,以及查询不存在的节点来查找类型化数据。对于因类型不婚配而导致的静态错误,显式转换到正确的类型是一种变通方法。XQuery 运转时错误被转换成空序列。