sql openxml学习笔记

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值