Est-ce que GetDate () Préparent-évalué pour chaque itération au sein de la boucle dans une transaction?
-
13-09-2019 - |
Question
J'ai un scénario où je suis Boucler dans un ResultSet dans une transaction et je dois insérer une valeur datetime unique dans une table pour chaque itération par le resultset - sera GetDate () recalculée chaque fois ou sera-ce que calculé la première fois et être la même pour chaque itération dans la boucle?
Mon pseudo-code est ci-dessous:
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
Merci d'avance!
La solution
Oui.
Si vous voulez éviter réévaluez, stocker sa valeur dans une variable avant la boucle, et insérer ce lieu.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow