2017-01-27 82 views
1

這是場景。SQL中的批量更新

我正在更新表中的多個記錄基於不同表中的聯接條件。我想在有更新時執行SP。這裏是我用於更新的SQL。

Update ep 
    Set ep.AddressEMail = mail 
FROM SampleTable Samp 
    Inner Join Emp ec 
On ec.EecEmpNo = Samp.employeeid 
    Inner Join Emp ep 
on ep.EEID = ec.EecEEID 
    Where ep.AddressEMail <> mail 

我想爲每個更新發生這種情況調用以下SP。

EXEC dbo.AddQuickEvent 

我必須通過每一個記錄改變我上面的SQL循環和執行SP(EXEC dbo.AddQuickEvent)所需要或是否有執行其它存儲過程的任何其他的方式,當有更新到行。

回答

2

更新是一個基於集合的操作,所以最好不要循環記錄併爲每條記錄調用一個SP,因爲這將會非常低效。

一個更好的選擇可能是做的什麼是你試圖在「AddQuickEvent」做一個觸發器在桌子上的一組更新的記錄工作。

當在SQL中操作時,從設置操作的角度考慮幾乎總是比單獨循環和處理每條記錄更好。

+0

非常感謝你的寶貴建議。如果我不關心性能,通過光標循環將是一個選項? – Naga

+0

你想在AddQuickEvent中做什麼?循環往往是一種選擇,幾乎總是不是最好的選擇。 – MikeS

+0

該過程中發生的事情很少,但我總是可以將相同的代碼複製到觸發器中。 – Naga