我理解from sources like this GETDATE()
应始终(好吧,最终,取决于循环的速度)在循环中返回不同的值。
我有这个TSQL:
BubbleSort(elemType list[], int numvalues)
但它始终为DECLARE @WaitUntilTime DATETIME = DATEADD(SECOND, 10, GETDATE())
WHILE (DATEDIFF(SECOND, GETDATE(), @WaitUntilTime) > 0)
BEGIN
SELECT GETDATE(), @WaitUntilTime
END
输出相同的值,并且循环永远不会像我想要的那样在10秒后结束。为什么呢?
我还发现this answer听起来像是一个类似的案例,但它讨论了GETDATE()
对GETDATE()
查询中的列进行一次评估。我不知道这是否也适用于while循环。
顺便说一句,我知道WAITFOR
,但我不能使用它,因为我想在一个批次中引入延迟。
答案 0 :(得分:2)
DECLARE @WaitUntilTime DATETIME = DATEADD(SECOND, 10, GETDATE())
DECLARE @Dummy int
WHILE (DATEDIFF(SECOND, GetDate(), @WaitUntilTime ) > 0)
BEGIN
Set @Dummy=1
END
SELECT GetDate(), @WaitUntilTime
延迟10秒后返回
(No column name) (No column name)
2016-10-18 13:53:20.000 2016-10-18 13:53:20.140