SQL Server操作XML(三)OPENXML函数功能

declare @xdoc xml;
  SET @xdoc ='
  <ROOT>
  <Customer CustomerID="VINET" ContactName="Paul Henriot">   
    <Order CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00">      
      <OrderDetail OrderID="10248" ProductID="11" Quantity="12"/>      
      <OrderDetail OrderID="10248" ProductID="42" Quantity="10"/>   
    </Order>
  </Customer>
  <Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">   
    <Order CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00">      
      <OrderDetail OrderID="10283" ProductID="72" Quantity="3"/>   
    </Order></Customer>
  </ROOT>'
  --XML 文档的内部表式法的文档句柄0(成功)或 >0(失败)
  declare @handle int;
  --将其转换为标准XML内部表达格式
  execute sp_xml_preparedocument @handle output,@xdoc
  -- 将XML文档格式转换为数据表格式
  SELECT *FROM  OPENXML (@handle, '/ROOT/Customer',1)

WITH (CustomerID  varchar(10),ContactName varchar(20))
  显示结果
 
  其中,1表示flag 为可选输入参数,表示应在 XML 数据和关系行集间使用映射以及应如何填充溢出列。
可选值:
0     默认为以特性为中心的映射。
1     使用以特性为中心的映射。
在某些情况下,可以将它与 XML_ELEMENTS 组合使用。使用时首先应用以特性为中心的映射,然后对于所有仍未处理的列应用以元素为中心的映射。
2     使用以元素为中心的映射。
在某些情况下,可以将它与 XML_ATTRIBUTES 组合使用。使用时先应用以特性为中心的映射,然后对于所有仍未处理的列应用以元素为中心的映射。
8     可与 XML_ATTRIBUTES 或 XML_ELEMENTS 组合使用(逻辑 OR)。
在检索的上下文中,该标志指明不应将已消耗的数据复制到溢出属性 @mp:xmltext。

你可能感兴趣的:(SQL Server)