GetDate()は、トランザクション内のループ内の反復ごとに再評価を取得していますか?

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

  •  13-09-2019
  •  | 
  •  

質問

私はトランザクション内で結果セットをループしていると私は、結果セットを通じて反復ごとにテーブル内のユニークなdatetime値を挿入する必要があるシナリオを持っている - たびに再計算されるか、それだけで計算されます)(GETDATEますその後、最初の時間とループを反復ごとに同じであること?

私の擬似コードは以下の通りです:

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