2
我有一個場景,我正在循環一個事務中的結果集,我需要在表中爲每次迭代通過結果集插入一個唯一的日期時間值 - 每次都會重新計算GetDate(),還是隻計算第一次,然後通過循環的每次迭代是相同的?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
謝謝!
順便說一句,你可能想要使用GetUtcDate()而不是GetDate()來避免模糊的夏令時時間戳。 – JasDev 2009-12-04 15:38:41
爲什麼你甚至在做一個循環?改爲使用基於集合的插入。 – HLGEM 2009-12-04 16:50:40