DECLARE @doc xml
--SET @doc = '<?xml version="1.0" ?>
--<SalesOrder CustomerID="18759" DueDate="2006-01-01T00:00:00"
--AccountNumber="10-4030-018759" ContactID="4189" BillToAddressID="14024" ShipToAddressID="14024" ShipMethodID="1" SubTotal="174.20" TaxAmt="10">
-- <Item>
-- <ProductID>714</ProductID>
-- <OrderQty>5</OrderQty>
-- <UnitPrice>28.84</UnitPrice>
-- </Item>
-- <Item>
-- <ProductID>715</ProductID>
-- <OrderQty>1</OrderQty>
-- <UnitPrice>30</UnitPrice>
-- </Item>
-- </SalesOrder>'
--SET @doc = '<?xml version="1.0" ?>
--<root>
--<SalesOrder CustomerID="18759" DueDate="2006-01-01T00:00:00"
--AccountNumber="10-4030-018759" ContactID="4189" BillToAddressID="14024" ShipToAddressID="14024" ShipMethodID="1" SubTotal="174.20" TaxAmt="10"/>
--<SalesOrder CustomerID="777" DueDate="2006-01-01T00:00:00"
--AccountNumber="10-4030-018759" ContactID="4189" BillToAddressID="14024" ShipToAddressID="14024" ShipMethodID="1" SubTotal="174.20" TaxAmt="10"/>
--</root>
--'
SET @doc = '<?xml version="1.0" ?>
<SalesOrder>
<Item a="11" b="222">
<ProductID>714</ProductID>
<OrderQty>5</OrderQty>
<UnitPrice>28.84</UnitPrice>
</Item>
<Item a="2223" b="33333">
<ProductID>715</ProductID>
<OrderQty>1</OrderQty>
<UnitPrice>30</UnitPrice>
</Item>
<Item a="" b="">
</Item>
</SalesOrder>'
DECLARE @docHandle int
EXEC sp_xml_preparedocument @docHandle OUTPUT, @doc
--INSERT [Sales].[SalesOrderHeader]
-- ([CustomerID], [DueDate], [AccountNumber], [ContactID], [BillToAddressID],
-- [ShipToAddressID], [ShipMethodID], [SubTotal], [TaxAmt])
--SELECT * FROM
---- 添加OPENXML 查询(返回一张表)插入数据到SalesOrderHeader 表
--OPENXML(@docHandle, '/root/SalesOrder', 1)
----访问/SalesOrder节点,0代表默认映射(属性),1代表节点的属性,2代表节点的文本,3代表属性和文本
--WITH --定义表的结构
--( CustomerID int,
-- DueDate datetime,
-- AccountNumber nvarchar(15),
-- ContactID int,
-- BillToAddressID int,
-- ShipToAddressID int,
-- ShipMethodID int,
-- SubTotal money,
-- TaxAmt money)
SELECT * FROM
-- 添加OPENXML 查询(返回一张表)插入数据到SalesOrderHeader 表
OPENXML(@docHandle, '/SalesOrder/Item', 1)
--访问/SalesOrder节点,0代表默认映射(属性),1代表节点的属性,2代表节点的文本,3代表属性和文本
WITH --定义表的结构
( a nvarchar(10),
b nvarchar(10)
)
SELECT * FROM
-- 添加OPENXML 查询(返回一张表)插入数据到SalesOrderHeader 表
OPENXML(@docHandle, '/SalesOrder/Item', 2)
--访问/SalesOrder节点,0代表默认映射(属性),1代表节点的属性,2代表节点的文本,3代表属性和文本
WITH --定义表的结构
( ProductID int,
OrderQty float,
UnitPrice float
)
SELECT * FROM
-- 添加OPENXML 查询(返回一张表)插入数据到SalesOrderHeader 表
OPENXML(@docHandle, '/SalesOrder/Item', 3)
--访问/SalesOrder节点,0代表默认映射(属性),1代表节点的属性,2代表节点的文本,3代表属性和文本
WITH --定义表的结构
( a nvarchar(10),
b nvarchar(10),
ProductID int,
OrderQty float,
UnitPrice float
)
-- 调用存储过程以清除内存树
EXEC sp_xml_removedocument @docHandle
sql openxml学习笔记
最新推荐文章于 2021-07-30 10:51:35 发布