Вычисляется ли GetDate() повторно для каждой итерации внутри цикла внутри транзакции?
-
13-09-2019 - |
Вопрос
У меня есть сценарий, в котором я просматриваю набор результатов внутри транзакции, и мне нужно ВСТАВИТЬ уникальное значение даты и времени в таблицу для каждой итерации набора результатов - будет ли GetDate() пересчитываться каждый раз или он будет рассчитываться только в первый раз? и затем быть одинаковым для каждой итерации цикла?
Мой псевдокод ниже:
BEGIN TRANSACTION
GO
DECLARE @ID INT
DECLARE @table TABLE (/* Columns */)
WHILE (SELECT COUNT(*) FROM @table WHERE PROCESSED = 0) > 0
BEGIN
SELECT TOP 1 @ID = ID FROM @table WHERE PROCESSED = 0
-- INSERT GetDate() into child table at this point.
-- Will GetDate() be re-evaluated each time?
UPDATE @table SET PROCESSED = 1 WHERE ID = @ID
END
END TRANSACTION
GO
Заранее спасибо!
Решение
Да.
Если вы хотите избежать его повторного вычисления, сохраните его значение в переменной перед циклом и вставьте ее вместо этого.
Не связан с StackOverflow