У меня проблема с КУРСОРОМ, когда в некоторых случаях он заполняется только одним значением, но вместо того, чтобы сразу существовать, он продолжается и продолжается до тех пор, пока в моем случае не произойдет сбой.
Это код :
DECLARE @positionID as INT
DECLARE position_cursor CURSOR FOR
SELECT positionUniqueNumber
FROM position
WHERE position.EmployeeID = @EmployeeID
OPEN position_cursor
FETCH NEXT FROM position_cursor INTO @positionID
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE position
SET positionFromDate = DATEADD(day,@days, positionFromDate)
WHERE position.positionUniqueNumber = @positionID
FETCH NEXT FROM position_cursor INTO @positionID
END
CLOSE position_cursor
DEALLOCATE position_cursor
Я бы ожидал, что курсор будет существовать после одного запуска, если 'position_cursor' имеет только одно значение, вместо этого он продолжается и продолжается, пока он не попытается установить Date выше 9999, и он выйдет из строя. Для меня обходной путь - проверить, сколько записей в таблице соответствует критериям, и использовать курсор, только если их больше 1, но я хотел бы найти лучший способ. Мысли? Спасибо