Я понимаю из таких источников, что GETDATE()
должен всегда (ну, в конце концов, в зависимости от скорости цикла) возвращать другое значение в цикле.
У меня есть этот TSQL:
DECLARE @WaitUntilTime DATETIME = DATEADD(SECOND, 10, GETDATE())
WHILE (DATEDIFF(SECOND, GETDATE(), @WaitUntilTime) > 0)
BEGIN
SELECT GETDATE(), @WaitUntilTime
END
Но он всегда выводит одно и то же значение для GETDATE()
, и цикл никогда не заканчивается через 10 секунд, как я этого хочу. Почему?
Я также нашел этот ответ, который звучит как аналогичный случай, но говорит о том, что GETDATE()
оценивается один раз для столбца в SELECT
запрос. Я не знаю, относится ли это и к циклу while.
Кстати, я знаю о WAITFOR
, но не могу использовать это потому, что я хочу ввести задержку в пределах одного пакета.