Mes données ressemble ci-dessous:Insérer des données XML dans la table SQL Server
<products>
<product ProductID="1" Price="79.99" Weight="30.00" Quantity="1">
<addon ProductAddonID="0" ControlTypeID="9" Price="25.00" Weight="0.00" Quantity="1" Name="yyy" Data="ASD" />
<addon ProductAddonID="89" ControlTypeID="0" Price="15.00" Weight="4.00" Quantity="1" Name="xxx" Data="" />
</product>
</products>
Mon code SQL ressemble à ceci:
INSERT INTO [Order].Items(OrderID, ProductID, Price, Weight, Quantity)
SELECT @OrderID, ProductID, Price, Weight, Quantity
FROM OPENXML (@XmlHandle, '/products/product',1)
WITH (ProductID INT '@ProductID',
Price DECIMAL(6,2) '@Price',
Weight DECIMAL(6,2) '@Weight',
Quantity INT '@Quantity')
SET @OrderItemId = SCOPE_IDENTITY()
INSERT INTO [Order].Addons(OrderItemID, ProductAddonID, ControlTypeID, Price, Weight, Quantity, [Name], DATA)
SELECT @OrderItemId, ProductAddonID, ControlTypeID, Price, Weight, Quantity, [Name], [Data]
FROM OPENXML(@XMLHandle, '/products/product/addon',1)
WITH (
ProductAddonID INT,
ControlTypeID INT,
Price DECIMAL(6,2),
Weight DECIMAL(6,2),
Quantity INT,
[Name] NVARCHAR(500),
[Data] NVARCHAR(max)
)
Quand j'avoir plusieurs produits/addons, tous les addons sont insertion avec le dernier @OrderItemID ... Je ne suis pas sûr de savoir comment travailler dans mon SQL qui insère l'addon dans la boucle qui itère à travers les nœuds du produit.
Quelqu'un pourrait-il me diriger dans la bonne direction?
merci à l'avance!
Pas vraiment besoin d'utiliser des tables temporaires. – TheGeekYouNeed