Вычисляется ли GetDate() повторно для каждой итерации внутри цикла внутри транзакции?

StackOverflow https://stackoverflow.com/questions/1847720

  •  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

Заранее спасибо!

Это было полезно?

Решение

Да.

Если вы хотите избежать его повторного вычисления, сохраните его значение в переменной перед циклом и вставьте ее вместо этого.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top