Мне нужно обновить ItemId
из таблицы Orderline
.
Строка заказа таблица
OrderlineId
SKU
ItemId
Элемент таблица
ItemId
SKU
Это результат, которого я хочу достичь
Таблица заказа
OrderlineId SKU ItemId
1 SKUabc NULL
2 SKU13 NULL
Таблица позиций
ItemId SKU
10 SKUabc
11 SKU13
РЕЗУЛЬТАТ:
Таблица строки заказа
OrderlineId SKU ItemId
1 SKUabc 10
2 SKU13 11
Итак, мне нужно получить все данные из Orderline
, где ItemId
равно NULL, затем l oop, эти данные затем запрашивают таблицу элементов, используя Orderline.SKU
, затем обновляют Orderline.ItemId
В настоящее время у меня есть этот код, но он еще не работает.
ALTER PROCEDURE [dbo].[UpdateOrderlinesItemId]
AS
DECLARE @MyCursor CURSOR;
DECLARE @ItemCursor CURSOR;
DECLARE @SKU int;
DECLARE @Item int;
BEGIN
SET @MyCursor = CURSOR FOR
SELECT
ol.OrderLineId, ol.ItemId
FROM
[OrderLine] AS ol
WHERE
ol.ItemId IS NULL
OPEN @MyCursor
FETCH NEXT FROM @MyCursor INTO @SKU
WHILE @@FETCH_STATUS = 0
BEGIN
SET @ItemCursor = CURSOR FOR
SELECT TOP 1 ItemId
FROM [dbo].[Item]
WHERE SKU = @SKU;
CASE
WHEN @ItemCursor IS NOT NULL
THEN UPDATE [dbo].OrderLine
SET ItemId = @ItemCursor
WHERE OrderLineId = @MyCursor.OrderLineId
END
FETCH NEXT FROM @MyCursor INTO @ItemId
END;
CLOSE @MyCursor ;
DEALLOCATE @MyCursor;
END
Пожалуйста, помогите мне и заранее спасибо.