2017-06-27 1 views
0

I "While .. fetch next"中にテンポラリテーブルを更新する 問題は、カーソルが次の行をフェッチするときにテンポラリテーブルが更新されないテンポラリテーブルは各行のデータの代わりに最終行のデータで更新されます。 シモンズ:私は非常によく英語を話すことはありません、私はあなたが仕事をするため、カーソルを必要としない私の要求行をフェッチするときにテンポラリテーブルをコミットする

 DECLARE @IdType UNIQUEIDENTIFIER 
DECLARE @SerialNumber NVARCHAR(64) 
DECLARE DeviceCursor CURSOR LOCAL FOR 
    SELECT DISTINCT 
     --Acc.[AccountHierarchyId], 
     MC.SerialNumber AS SerialNumber, 
     MC.IdType AS IdType 
    FROM 
     @MachinesContrat MC 
    WHERE 
     MC.TypeAffaire = 'Essentiel' 

OPEN DeviceCursor 
FETCH NEXT FROM DeviceCursor INTO @SerialNumber, @IdType 
WHILE @@FETCH_STATUS = 0 
BEGIN 

     UPDATE 
      MI SET MI.SerialNumber = @SerialNumber 
     FROM 
      @MachinesInventory MI 
     WHERE 
      MI.fk_IdType = @IdType AND isnull(MI.SerialNumber,'Dummy') <> @SerialNumber 

    FETCH NEXT FROM DeviceCursor INTO @SerialNumber, @IdType 
END 
CLOSE DeviceCursor; 
DEALLOCATE DeviceCursor; 
+0

更新前後の表の内容を示すサンプルデータを追加することは可能ですか?また、テーブルに更新後の内容を追加することもできますか? –

答えて

2

を理解することができます願っています。あなたの更新ステートメントの単純な結合がそれを行うことができ、より効果的です。

関連する問題