Hat GetDate () erhalten für jede Iteration innerhalb der Schleife innerhalb einer Transaktion neu bewertet?

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

  •  13-09-2019
  •  | 
  •  

Frage

Ich habe ein Szenario, in dem ich durch einen resultset innerhalb einer Transaktion am Looping und ich brauche für jede Iteration durch die resultset eines einzigartigen Datetime-Wert in einer Tabelle einfügen - wird GetDate () jedes Mal neu berechnet werden oder es wird nur berechnet werden, das erste Mal, und dann das gleiches durch die Schleife für jede Iteration sein?

Mein Pseudo-Code ist unter:

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

Vielen Dank im Voraus!

War es hilfreich?

Lösung

Ja.

Wenn Sie möchten, neu zu bewerten es, speichern Sie seinen Wert in einer Variablen vor der Schleife zu vermeiden, und legen Sie diese stattdessen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top