Heim >Datenbank >MySQL-Tutorial >XML流式的查询

XML流式的查询

WBOY
WBOYOriginal
2016-06-07 14:56:51918Durchsuche

在 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片断:  


     OPENXML 功能执行与FOR XML 条件子句相反的功能,它创建一个XML文档的rowset ,如下面的示例所示:
DECLARE @doc nvarchar(1000)
SET @doc = '
   
   
  
'
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

  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
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:用mysql储存过程批量插入数据Nächster Artikel:连接远程服务器