У меня есть вложенное время l oop, чтобы выбрать некоторые записи акций из таблицы #stock. Если запас истощен, мне нужно перейти к следующей соответствующей записи запаса. Мой l oop продолжает выбирать одну и ту же строку из временной таблицы. Даже если я удаляю строку и проверяю внутри вложенного Начало ... Конец.
WHILE @DemandOutstandingQty > 0 --Check for stock
BEGIN
SET ROWCOUNT 1
SELECT @StockExpirationDate = ExpirationDate, @StockRemainingQty = RemainingQty, @StockLotNum = LotNum, @StockID = StockGUID
FROM #stock WHERE PartNum = @DemandPartNum AND RemainingQty > 0
ORDER BY ExpirationDate ASC
WHILE @StockID IS NOT NULL
BEGIN
SET ROWCOUNT 0
--several other if blocks here end with demand going to 0 and breaking to the outer While
IF (@StockExpirationDate > @DemandDueDate AND @StockRemainingQty < @DemandOutstandingQty) --Stock not enough to meet demand
BEGIN
UPDATE #Stock SET RemainingQty = 0 WHERE StockGUID = @StockID;
--DELETE FROM #stock WHERE StockGUID = @StockID; --Tried this also
SET @DemandOutstandingQty = @DemandOutstandingQty - @StockRemainingQty;
Print @@StockID --The stock record with no remaining stock or deleted
Select * from #stock where StockGUID = @StockID; --returns no rows / updated remaining qty
END;
SET ROWCOUNT 1
SELECT @StockExpirationDate = ExpirationDate, @StockRemainingQty = RemainingQty, @StockLotNum = LotNum, @StockID = StockGUID
FROM #stock
WHERE PartNum = @DemandPartNum AND RemainingQty > 0 AND StockGUID <> @StockID
ORDER BY ExpirationDate ASC
Print @StockID --Its the same ID, not moving to the next stock record
SET ROWCOUNT 0
END --@StockID while
--does some more stuff
END --Outer While
Может ли это быть из-за вложенного начала ... конца?