Я постепенно накапливаю свои знания по извлечению SQL и XML и столкнулся с проблемой ускорения, очевидно, мое понимание неясно, потому что я предположил бы, что приведенный ниже код извлечет XML в две отдельные таблицы, но что происходитзаключается в том, что он только успешно помещается в первый и полностью отсутствует второе предложение вставки - не могли бы вы сообщить мне, что я сделал неправильно
DECLARE @XMLData XML
delete from [dbo].[XMLCustomerDetails]
delete from [dbo].[XMLOrderDetails]
SELECT @xmldata = [XMLData] FROM [OPENXML];
--First of all we declare the default namespace (xmlns="Some URI")
WITH XMLNAMESPACES(DEFAULT 'http://www.adventure-works.com')
------------------------------------------------------------------------------------------------------
insert into [dbo].[XMLCustomerDetails]
([CustomerID],[CompanyName],[ContactName],[ContactTitle],[Phone],[Address])
SELECT pd.value('(@CustomerID)[1]','nvarchar(max)') AS CustomerID
,pd.value('(CompanyName/text())[1]','nvarchar(max)') AS CompanyName
,pd.value('(ContactName/text())[1]','nvarchar(max)') AS ContactName
,pd.value('(ContactTitle/text())[1]','nvarchar(max)') AS ContactTitle
,pd.value('(Phone/text())[1]','nvarchar(max)') AS Phone
,pd.value('(FullAddress/Address/text())[1]','nvarchar(max)') AS Address
--,td.value('(@CustomerID)[1]','nvarchar(max)') AS CustomerID
FROM @xmldata.nodes('//Root') as A(c)
cross apply @xmlData.nodes('//Root/Customers/Customer') as i(pd)
-------------------------------------------------------------------------------------------------------
insert into [dbo].[XMLOrderDetails]
([CustomerID]
,[EmployeeID],[OrderDate],[RequiredDate],[ShipVia]
,[Feight],[ShipName],[ShipAddress],[ShipCity],[ShipRegion],[ShipPostalCode],[ShipCountry]
)
SELECT td.value('(CustomerID/text())[1]','nvarchar(max)') AS CustomerID,
td.value('(EmployeeID/text())[1]','nvarchar(max)') AS EmployeeID,
td.value('(OrderDate/text())[1]','nvarchar(max)') AS OrderDate,
td.value('(RequiredDate/text())[1]','nvarchar(max)')AS RequiredDate,
td.value('(ShipInfo/ShipVia/text())[1]','nvarchar(max)') AS ShipVia,
td.value('(ShipInfo/Freight/text())[1]','nvarchar(max)') AS Freight,
td.value('(ShipInfo/ShipName/text())[1]','nvarchar(max)') AS ShipName,
td.value('(ShipInfo/ShipAddress/text())[1]','nvarchar(max)') AS ShipAddress,
td.value('(ShipInfo/ShipCity/text())[1]','nvarchar(max)') AS ShipCity,
td.value('(ShipInfo/ShipRegion/text())[1]','nvarchar(max)') AS ShipRegion,
td.value('(ShipInfo/ShipPostalCode/text())[1]','nvarchar(max)') AS ShipPostalCode,
td.value('(ShipInfo/ShipCountry/text())[1]','nvarchar(max)') AS ShipCountry
from @xmldata.nodes('//Root') B(c)
cross apply @xmlData.nodes('//Root/Orders/Order') as o(td)