存储过程 游标
1。在存儲過程中,使游標(biāo),可以根據(jù)每條記錄的某個字段的取值的不同,來采取相應(yīng)的處理。這就是流程控制。
2。對于大的事務(wù),可以分成一個個小事務(wù)來提交。如你所舉的例子,其實(shí)一個update語句邏輯上是可以完成這個功能的。可是要想到,現(xiàn)實(shí)中,回滾段是有限度的。如果一個update語句所更新的記錄需要占用很大的回滾段,而現(xiàn)有的回滾段都不能滿足需要的話,只好用游標(biāo)來一條條update,然后用多次提交的辦法來完成整個事務(wù)。
?
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 inserted
? 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
end
轉(zhuǎn)載于:https://blog.51cto.com/twins/1855390
總結(jié)
- 上一篇: Docker 的插件式设计
- 下一篇: yii2使用 db log