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