هل يتم إعادة تقييم GetDate () لكل تكرار داخل حلقة ضمن معاملة؟

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

  •  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

شكرا مقدما!

هل كانت مفيدة؟

المحلول

نعم.

إذا كنت ترغب في تجنب إعادة تقييمه، فقم بتخزين قيمتها في متغير قبل الحلقة، وإدراج ذلك بدلا من ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top