Member 12966735 Ответов: 1

Как обновить несколько строк с помощью XML


Есть две таблицы одна Product_mst и другой Stock_Master у меня есть один веб-страницы для размещения заказа из нескольких продуктов им с помощью XML, чтобы вставить несколько продуктов, он работает нормально, но в то же время я хочу обновить мой Stock_master, чтобы уменьшить количество запаса для этого я и добавил обновления блока на заказ СП я хочу, чтобы обновить запас продуктов мудрые БТ сейчас это обновление, чтобы все строки, пожалуйста, помогите мне пожалуйста найти моего СП ниже

Что я уже пробовал:

Изменить процедуру [dbo].[InsertOrderDtls]
(
@OrderXml XML
)
АС
НАЧАТЬ
Вставить в order_dtls (код заказа, код продукта, стоимость,количество, сумма)
Выберите P.значение('@Кодзаказа','int', в), стр. значение('@код продукта','ИНТ'),
п. значение('@скорость','плавать') ,стр. значение('@кол-во','плавать'), стр. значение('@сумма','поплавок')
-- , p. value ('@AddedBy', 'INT')
-- , p. value ('@AddedOn', 'SMALLDATETIME')

От @OrderXml.метод nodes('/корень/заказ')п(п);

-- RETURN @@ROWCOUNT;





обновление product_Mst
установить кол-во = кол-во - вопрос.значение('@кол-во','поплавок')
из @OrderXml. nodes ('/ROOT/Order') n(q);

-- обновление Stock_Master
--установить кол-во = кол - Р.значение('@кол-во','поплавок')
--from @OrderXml. nodes ('/ROOT/Order') n(r)
--где ProductId = r. value ('@ProdId', 'INT');


КОНЕЦ

1 Ответов

Рейтинг:
8

Richard Deeming

Попробуйте что-нибудь вроде этого:

UPDATE
    M
SET
    Qty = Qty - q.value('@Qty','FLOAT') 
FROM
    product_Mst As M
    INNER JOIN @OrderXml.nodes('/ROOT/Order') As n(q)
    ON q.value('@ProdId','INT') = M.ProductId
;

UPDATE 
    M
SET 
    Qty = Qty - q.value('@Qty','FLOAT') 
FROM
    Stock_Master As M
    INNER JOIN @OrderXml.nodes('/ROOT/Order') As n(q)
    ON q.value('@ProdId','INT') = M.ProductId
;