sql server 解读xml
DECLARE @idoc int
DECLARE @doc varchar(1000)
set @doc=N'<ROOT>
<Customer CustomerID="VINET" ContactName="Paul Henriot">
<Order OrderID="10248" CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00">
<OrderDetail ProductID="11" Quantity="12"/>
<OrderDetail ProductID="42" Quantity="10"/>
</Order>
<test>12</test>
</Customer>
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">
<Order OrderID="10283" CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00">
<OrderDetail ProductID="72" Quantity="3"/>
</Order>
<test>333</test>
</Customer>
</ROOT>'
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
SELECT *
FROM OPENXML (@idoc, '/ROOT/Customer/Order/OrderDetail',2)
WITH (OrderID int '../@OrderID',
CustomerID varchar(10) '../@CustomerID',
OrderDate datetime '../@OrderDate',
ProdID int '@ProductID',
Qty int '@Quantity')
SELECT *
FROM OPENXML (@idoc, '/ROOT/Customer/Order/OrderDetail',1)
WITH (OrderID int '../@OrderID',
CustomerID varchar(10) '../@CustomerID',
OrderDate datetime '../@OrderDate',
ProductID int ,
Quantity int )
SELECT *
FROM OPENXML (@idoc, '/ROOT/Customer',2)
WITH (
test varchar(20))
EXEC sp_xml_removedocument @idoc
注:openxml会造成性能损失,建议用自带的函数。
![]()
openxml:第三个参数:1读属性,2读元素(注:可用@符号进行转换)


浙公网安备 33010602011771号