Sql server GetDate()是否为事务中循环内的每个迭代重新计算?
我有一个场景,在一个事务中循环通过一个resultset,我需要在表中为通过resultset的每次迭代插入一个唯一的datetime值-GetDate()是每次都重新计算,还是只在第一次计算,然后在循环的每次迭代中都相同 我的伪代码如下:Sql server GetDate()是否为事务中循环内的每个迭代重新计算?,sql-server,tsql,getdate,Sql Server,Tsql,Getdate,我有一个场景,在一个事务中循环通过一个resultset,我需要在表中为通过resultset的每次迭代插入一个唯一的datetime值-GetDate()是每次都重新计算,还是只在第一次计算,然后在循环的每次迭代中都相同 我的伪代码如下: BEGIN TRANSACTION GO DECLARE @ID INT DECLARE @table TABLE (/* Columns */) WHILE (SELECT COUNT(*) FROM @table WHERE PROCESSED
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
提前谢谢 是。
如果您想避免重新计算它,请将其值存储在循环之前的变量中,然后插入该变量。顺便说一句,您可能希望使用GetUtcDate()而不是GetDate()来避免不明确的夏令时时间戳。您到底为什么要进行循环?改为执行基于集合的插入。