هل يتم إعادة تقييم GetDate () لكل تكرار داخل حلقة ضمن معاملة؟
-
13-09-2019 - |
سؤال
لدي سيناريو حيث أحبطت من خلال نتائج ضمن معاملة وأحتاج إلى إدراج قيمة تاريخية فريدة من نوعها في جدول لكل تكرار من خلال النتائج - سيتم إعادة حساب etstate () في كل مرة أو سيتم حسابها إلا في المرة الأولى ثم تكون هي نفسها لكل تكرار من خلال الحلقة؟
بلدي الكود الزائفي هو أدناه:
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
شكرا مقدما!
المحلول
نعم.
إذا كنت ترغب في تجنب إعادة تقييمه، فقم بتخزين قيمتها في متغير قبل الحلقة، وإدراج ذلك بدلا من ذلك.
لا تنتمي إلى StackOverflow