No GetDate get () re-evaluado para cada iteración dentro del bucle dentro de una transacción?
-
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!
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