No GetDate get () re-evaluado para cada iteración dentro del bucle dentro de una transacción?

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

  •  13-09-2019
  •  | 
  •  

Pregunta

Tengo un escenario en el que estoy bucle a través de un conjunto de resultados dentro de una transacción y tengo que insertar un valor de fecha y hora única dentro de una tabla para cada iteración a través del conjunto de resultados - se GetDate () a calcular cada vez o voy sólo se calculará la primera vez y luego ser el mismo para cada iteración a través del bucle?

Mi pseudo-código es el siguiente:

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

Gracias de antemano!

¿Fue útil?

Solución

Sí.

Si se quiere evitar la re-evaluación que, almacenar su valor en una variable antes del bucle, e insertar en su lugar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top