微软的这个例子倒是可以,不过就是字符串变量最多才8000位,可以试试想办法用文本型传递
declare @idoc int
declare @doc varchar(1000)
set @doc ='
<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>
</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>
</Customer>
</ROOT>'
--Create an internal representation of the XMLdo
cument.
exec sp_xml_preparedocument @idoc OUTPUT, @doc
-- SELECT stmt using OPENXML rowset provider
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')