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