Хорошо, я, конечно, знаком с обходом таблицы с использованием курсора только для чтения, но не могу найти правильный синтаксис для обновления текущей строки (ни для страница курсора или страница ОБНОВЛЕНИЕ в книгах в Интернете, кажется, показывают эту простую операцию):
DECLARE @counter int;
SET @counter = 1;
DECLARE myCursor CURSOR FOR
SELECT RowID, Value FROM myTable
FOR UPDATE OF Value;
OPEN myCursor;
WHILE @counter < 100
FETCH NEXT FROM myCursor
UPDATE myCursor SET Value = @Counter << DOESN'T WORK
SET @counter = @counter + 1
END
CLOSE myCursor
DEALLOCATE myCursor
Я также попробовал просто SET Value = @Counter
и использовал INTO @Value
на FETCH, но, похоже, не смог заставить это работать.
Это явно слишком упрощенно, есть гораздо более эффективные способы просто "отсчитать" столбец. Я не буду утомлять вас фактическим расчетом.
Да, мне нужен курсор, а не ОБНОВЛЕНИЕ для всей таблицы (значение для каждой последующей строки будет основано на расчете, который зависит от уже записанной предыдущей строки).
Первоначально проверялось это на SQL 2005, но мне также нужно будет перенести код на SQL 2000 и 2008. Спасибо!