Ha GetDate () ottenere rivalutato per ogni iterazione all'interno del ciclo all'interno di una transazione?

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

  •  13-09-2019
  •  | 
  •  

Domanda

Ho uno scenario in cui sto scorrendo un gruppo di risultati all'interno di una transazione e ho bisogno di inserire un valore datetime unica all'interno di una tabella per ogni iterazione del gruppo di risultati - si GetDate () essere ricalcolato ogni volta o sarà calcolato solo la prima volta e poi la stessa per ogni iterazione del ciclo?

Il mio pseudo-codice è qui sotto:

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

Grazie in anticipo!

È stato utile?

Soluzione

Sì.

Se si vuole evitare di rivalutare esso, memorizzare il suo valore in una variabile prima del ciclo, e inserire quello.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top