存储过程 游标

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

相关文章
相关标签/搜索