2

我有一个场景,我在事务中循环遍历结果集,并且我需要在表中插入一个唯一的日期时间值,以便通过结果集进行每次迭代 - 每次都会重新计算 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

提前致谢!

4

1 回答 1

7

是的。

如果您想避免重新评估它,请将其值存储在循环之前的变量中,然后将其插入。

于 2009-12-04T15:33:28.020 回答