WEB开发网
开发学院数据库MSSQL Server Microsoft SQL Server 2005 中的 XML 支持(2) 阅读

Microsoft SQL Server 2005 中的 XML 支持(2)

 2007-05-13 09:26:32 来源:WEB开发网   
核心提示: •使用 sql:variable(),可以在 XQuery 或 XML DML 表达式中应用 SQL 变量的值,Microsoft SQL Server 2005 中的 XML 支持(2)(3),•通过 sql:column(),可以在 XQuery 或 XML DML

使用 sql:variable(),可以在 XQuery 或 XML DML 表达式中应用 SQL 变量的值。

通过 sql:column(),可以在 XQuery 或 XML DML 上下文中使用来自关系列的值。

这种方法允许应用程序参数化查询,如下面的示例所示。Sql:column() 的用法与前者类似,并且还带来其他的好处。正如基于成本的查询优化器所确定的,可以使用列的索引来提高效率。此外,也可以使用计算列。

XML 和用户定义的类型不允许与 sql:variable() 和 sql:column() 一起使用。

例:使用 sql:variable() 的跨域查询

在这种查询中,<book> 元素的 ISBN 是使用 SQL 变量 @isbn 来传入的。代替使用常量,sql:variable() 提供 ISBN 的值,并且该查询可以用于搜索任何 ISBN,而不只是 ISBN 为 0-7356-1588-2 的 元素。

DECLARE @isbn varchar(20)
SET   @isbn = '0-7356-1588-2'
SELECT xCol
FROM  docs
WHERE  xCol.exist ('/book[@ISBN = sql:variable("@isbn")]') = 1
从 XML 数据生成行集

在自定义属性管理和数据交换场景中,应用程序通常将 XML 数据的某些部分映射到行集。例如,为了将输入参数表传送到存储过程或函数,应用程序需要将数据转换成 XML,并且将其作为 XML 数据类型的参数传入。在存储过程或函数中,行集是从 XML 参数生成的。

SQL Server 2000 为此提供了 OpenXml()。它简化了从 XML 实例生成行集的过程,方法是指定行集的关系架构以及将 XML 实例内的值映射到行集中的列的方式。

另外,还可以使用 nodes() 方法来生成 XML 实例中的节点上下文,并且在 value()、query()、exist() 和 nodes() 方法中使用该节点上下文来生成所期望的行集。nodes() 方法接受 XQuery 表达式,在 XML 列的每个 XML 实例中对其进行求值,并且有效地使用 XML 索引。下一个示例演示如何将 nodes() 方法用于行集生成。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:Microsoft SQL Server

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接