是否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