我有一个场景,我在事务中循环结果集,我需要通过结果集在每个迭代中插入一个唯一的日期时间值 - 每次都会重新计算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
提前致谢!
是.
如果要避免重新评估它,请在循环之前将其值存储在变量中,然后插入它.