XQuery 增强功能
SQL Server 2005 引入了 xml 数据类型,提供了用于对存储在列或变量中的 XML 数据执行操作的大量方法。可执行的大多数操作都使用 XQuery 语法导航和操纵 XML 数据。SQL Server 2005 支持的 XQuery 语法包括 FLWOR 表达式中的 for、where、order by 和 return 语句,这些语句可用于循环访问 XML 文档中的节点,也可用于返回值。
SQL Server 2008 添加了对 let 语句的支持,该语句用于向 XQuery 表达式中的变量赋值,如下面的示例所示:
set @x=
'<Invoices>
<Invoice>
<Customer>Kim Abercrombie</Customer>
<Items>
<Item ProductID="2" Price="1.99" Quantity="1" />
<Item ProductID="3" Price="2.99" Quantity="2" />
<Item ProductID="5" Price="1.99" Quantity="1" />
</Items>
</Invoice>
<Invoice>
<Customer>Margaret Smith</Customer>
<Items>
<Item ProductID="2" Price="1.99" Quantity="1"/>
</Items>
</Invoice>
</Invoices>'
SELECT @x.query(
'<Orders>
{
for $invoice in /Invoices/Invoice
let $count :=count($invoice/Items/Item)
order by $count
return
<Order>
{$invoice/Customer}
<ItemCount>{$count}</ItemCount>
</Order>
}
</Orders>')
这个例子返回以下 XML。
<Order>
<Customer>Margaret Smith</Customer>
<ItemCount>1</ItemCount>
</Order>
<Order>
<Customer>Kim Abercrombie</Customer>
<ItemCount>3</ItemCount>
</Order>
</Orders>
注意,SQL Server 2008 不允许向结构化的元素赋值。
XML DML 增强功能
与使用 XQuery 表达式对 XML 数据执行操作一样,xml 数据类型通过其 modify 方法支持insert、replace value of 和 delete 这些 XML DML 表达式。可以使用这些 XML DML 表达式操纵 xml 列或变量中的 XML 数据。
SQL Server 2008 添加了对使用 insert 表达式中的 xml 变量向现有 XML 结构插入 XML 数据的支持。例如,假定一个名称为 @productList 的 xml 变量包括以下 XML:
<Bike>Mountain Bike</Bike>
<Bike>Road Bike</Bike>
</Products>
可以使用以下代码向产品列表中插入一个新自行车:
SET @newBike = '<Bike>Racing Bike</Bike>'
SET @productList.modify
('insert sql:variable("@newBike") as last into (/Products)[1]')
运行这段代码后,@productList 变量中会包括以下 XML。
<Bike>Mountain Bike</Bike>
<Bike>Road Bike</Bike>
<Bike>Racing Bike</Bike>
</Products>
结束语
SQL Server 2008 除提供对 SQL Server 2005已有 XML 的全面支持外,还扩展了构建能够合并关系数据和 XML 的强大数据库解决方案的功能。XML 架构支持的改进和 xml 数据类型的增加,对应用程序开发人员具有极大的吸引力。
获取更多信息:
http://www.microsoft.com/sql
本文对您有帮助吗?请告诉我们您的感受。如果从1(差)到5(极好)的分值中进行选择,您认为本文应该打几分?原因是什么?例如:
您是否认为由于提供了很好的例子、精美的屏幕截图、清晰的文字描述或其他原因而应该给它高分?
您是否认为由于用例不当、屏幕截图模糊、文字描述含混不清而应该给它低分?
您的意见有助于我们改善所发布白皮书的质量。提交意见。