科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道[Sql server]2005的XML最佳实施策略(19)

[Sql server]2005的XML最佳实施策略(19)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Microsoft SQL Server 2005 为 XML 数据处硖峁┝斯惴旱闹С帧ML 值可以自然地存储在 XML 数据类型列中,而后者可以根据 XML 架构集合进行类型化,或者保持非类型化。

作者:Shankar Pal 来源:microsoft 2007年9月16日

关键字: 实施策略 SQL Server SQL Server 2005 数据库

  • 评论
  • 分享微博
  • 分享邮件

示例:对 XML 数据类型使用 OpenXml()

我们可以像下面显示的那样,使用 OpenXml() 来改写上一示例中的查询,方法是:创建一个游标,将各个 XML 实例读入一个 XML 变量,然后向其应用 OpenXML():

DECLARE name_cursor CURSOR

FOR

SELECT xCol

FROM T

OPEN name_cursor

DECLARE @xmlVal XML

DECLARE @idoc int

FETCH NEXT FROM name_cursor INTO @xmlVal

WHILE (@@FETCH_STATUS = 0)

BEGIN

EXEC sp_xml_preparedocument @idoc OUTPUT, @xmlVal

SELECT *

FROM OPENXML (@idoc, '//author')

WITH (FirstName varchar(50) 'first-name',

LastName varchar(50) 'last-name') R

WHERE R.FirstName != 'David'

EXEC sp_xml_removedocument @idoc

FETCH NEXT FROM name_cursor INTO @xmlVal

END

CLOSE name_cursor

DEALLOCATE name_cursor

OpenXml() 会创建内存中的表示形式,并使用工作表而不是查询处理器。它依赖于 MSXML 3.0 的 XPath 1.0 处理器而不是 XQuery 引擎。工作表不在对 OpenXml() 的多个调用中共享(即使是在同一个 XML 实例上)。这限制了它的可伸缩性。在未指定 WITH 子句时,可以通过 OpenXml() 来访问 XML 数据的边缘表格式。而且,还可以通过它使用 XML 值在单独的"溢出"列中的剩余部分。

nodes() 和 value() 函数的组合可以有效地使用 XML 索引。因此,这一组合可以表现出比 OpenXml 更高的可伸缩性。

使用 FOR XML 从行集中生成 XML

通过新的 TYPE 指令,可以使用 FOR XML 从行集中生成 XML 数据类型实例。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章