Est-ce que GetDate () Préparent-évalué pour chaque itération au sein de la boucle dans une transaction?

StackOverflow https://stackoverflow.com/questions/1847720

  •  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!

Était-ce utile?

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
scroll top