1。在存儲過程當中,使遊標,能夠根據每條記錄的某個字段的取值的不一樣,來採起相應的處理。這就是流程控制。
2。對於大的事務,能夠分紅一個個小事務來提交。如你所舉的例子,其實一個update語句邏輯上是能夠完成這個功能的。但是要想到,現實中,回滾段是有限度的。若是一個update語句所更新的記錄須要佔用很大的回滾段,而現有的回滾段都不能知足須要的話,只好用遊標來一條條update,而後用屢次提交的辦法來完成整個事務。ide
CREATE TRIGGER tg_dc_prc ON dc_prc_factor
FOR UPDATE
AS
set nocount on
if update(factor_code)
begin
declare @factorCode nvarchar(10),@factorCode2 nvarchar(10),@policyCode nchar(10),@formula nvarchar(400)
select @factorCode='{'+rtrim(deleted.factor_code)+'}' from deleted
select @factorCode2='{'+rtrim(inserted.factor_code)+'}' from insertedfetch
declare formula_cursor cursor for select policy_code,formula from dc_prc_policy where formula = @factorCode
open formula_cursor
fetch next from formula_cursor into @policyCode,@formula
while @@fetch_status=0
begin
select @formula=replace(@formula,@factorCode,@factorCode2)
update dc_prc_policy set formula=@formula where policy_code=@policyCode
fetch next from formula_cursor into @policyCode,@formula
end
close formula_cursor
deallocate formula_cursor
endspa