首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

OPENXML 實戰:將 XML 批次轉為關聯資料並單次寫入

     編輯:關於SqlServer

場景:購物車提交含多筆明細,欲單次資料庫呼叫完成訂單入庫,減少網路往返。

XML 範例

<ShoppingCart>
  <Purchase ProductID="7" Price="10.00" SaleDate="10/11/2006" SaleBatchID="4523" CustomerID="2398"/>
  <Purchase ProductID="99" Price="25.00" ... />
  ...
</ShoppingCart>

處理流程

  1. 應用層組裝 XML 字串,傳給預存程序。
  2. 預存程序:
    DECLARE @idoc INT, @xml VARCHAR(8000)
    EXEC sp_xml_preparedocument @idoc OUTPUT, @xml
    INSERT INTO OrderDetails (ProductID, Price, SaleDate, SaleBatchID, CustomerID)
    SELECT ProductID, Price, SaleDate, SaleBatchID, CustomerID
    FROM OPENXML(@idoc, '/ShoppingCart/Purchase', 2)
    WITH (ProductID INT, Price MONEY, SaleDate DATETIME, SaleBatchID INT, CustomerID INT)
    EXEC sp_xml_removedocument @idoc

優勢:單次往返、集合操作、無游標、記憶體中解析極快。適用於批次匯入、Web Service 介接、異構同步等場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved