Hat GetDate () erhalten für jede Iteration innerhalb der Schleife innerhalb einer Transaktion neu bewertet?
-
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!
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