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)
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。