首页 >数据库 >mysql教程 >XML流式的查询

XML流式的查询

WBOY
WBOY原创
2016-06-07 14:56:51955浏览

在 SQLServer2000 中, Microsoft 推出了 Transact-SQL 关键字 FORXML 和 OPENXML 。 FORXML 是对 SELECT 语句的扩展,它返回如下面的示例所示的 XML 流式的查询结果。 SELECT ProductID, ProductName FROM Products Product FOR XML AUTO 这个查询返回一个

SQL Server 2000中,Microsoft 推出了Transact-SQL 关键字FOR XMLOPENXMLFOR XML 是对SELECT语句的扩展,它返回如下面的示例所示的XML流式的查询结果。
  SELECT ProductID, ProductName
  FROM Products Product
  FOR XML AUTO
  这个查询返回一个如下面示例所示的XML片断:  
ac5fe42a8bca04559820b812e5af2472
d9f5cc9808ad81312bb21959743af013
     OPENXML 功能执行与FOR XML 条件子句相反的功能,它创建一个XML文档的rowset ,如下面的示例所示:
DECLARE @doc nvarchar(1000)
SET @doc = '1e20ca90f48b2d0beceeb61d9d1be887
   a2bd07a9ccf52dfda2714c6ca6ba482c
   84f51ffba94bdb15ba2d3c52f02509ad
  5247ab3611d3ab8ef4f5e821bef7957d'
DECLARE @xmlDoc integer
EXEC sp_xml_preparedocument @xmlDoc OUTPUT, @doc
SELECT * FROM
OPENXML (@xmlDoc, 'Order/Item', 1)
WITH
(OrderID integer '../@OrderID',
ProductID integer,
Quantity integer)
EXEC sp_xml_removedocument @xmlDoc
注意用sp_xml_preparedocument和sp_xml_removedocument 存储过程来创建XML文档的节点树的一个内存展示的用法。这个Transact-SQL 代码返回下面的rowset。 
OrderID    ProductID    Quantity
1011        1        2
1011        2        1

11da01c6148ec3ec20c6fdc9adc31f96
  SELECT ProductID, ProductName 
  FROM Products Product 
  FOR XML AUTO
DECLARE @doc nvarchar(1000)
SET @doc = '<Order OrderID = "1011">
   <Item ProductID="1" Quantity="2"/>
   <Item ProductID="2" Quantity="1"/>
  </Order>'
DECLARE @xmlDoc integer
EXEC sp_xml_preparedocument @xmlDoc OUTPUT, @doc
SELECT * FROM
OPENXML (@xmlDoc, 'Order/Item', 1)
WITH
(OrderID integer '../@OrderID',
ProductID integer,
Quantity integer)
EXEC sp_xml_removedocument @xmlDoc
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn