Добрый вечер!
Подскажите пожалуйста по задаче:
Необходимо написать хранимую процедуру, на вход которой передается XML и в которой в рамках одной транзакции заполняются таблицы Categories и Products базы данных Northwind. Задание выполнить не используя курсоры и циклы.
Для упрощения поле SupplierID таблицы Products не заполняем.
DECLARE @idoc int, @doc varchar(1000)
SET @doc ='
<ROOT>
<Categories>
<Category CategoryName="MyCategory_1" Description="My first category description">
<Products ProductName="Old tee" QuantityPerUnit="1 kg pkg." UnitPrice="10.00"
UnitsInStock="22" UnitsOnOrder="0" ReorderLevel="5" Discontinued="1"/>
<Products ProductName="Fresh tee" QuantityPerUnit="2 kg pkg." UnitPrice="20.00"
UnitsInStock="120" UnitsOnOrder="0" ReorderLevel="25"
Discontinued="0"/>
<Products ProductName="Gold tee" QuantityPerUnit="3 kg pkg." UnitPrice="150.00"
UnitsInStock="3" UnitsOnOrder="0" ReorderLevel="0" Discontinued="0"/>
</Category>
</Categories>
</ROOT>';-- Создание внутреннего представления XML-документа.
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc;
SELECT *
FROM OPENXML (@idoc, '/ROOT/Categories/Category', 2) WITH
(
CategoryName char(20) '
@CategoryName',
Description varchar(50) '
@Description',
ProductName char(20) 'Products/
@ProductName',
QuantityPerUnit varchar(50) 'Products/
@QuantityPerUnit',
UnitPrice float(20) 'Products/
@UnitPrice',
UnitsInStock int(10)'Products/
@UnitsInStock',
UnitsOnOrder int(10)'Products/
@UnitsOnOrder',
ReorderLevel int(10)'Products/
@ReorderLevel',
Discontinued int(10)'Products/
@Discontinued'
);