Sqlserver 游标的实例_存储过程_带描述

117 阅读1分钟

QQ:285679784   欢迎加入技术交流QQ群80669150 (附加信息:珠海 -"Lzw )一起学习 !





CREATE PROC PROC_SaveGgInitOrder
@Gg_id int,
@Init_fir_sec int
AS




--使用游标更新orderid


--first


DECLARE @maxOrderid int,@Log_id int --记录当前指向的Log_id


--创建游标Create Cursor(Cursor for select Log_id from Table)
DECLARE Cursor_Order Cursor FOR
--获取需要处理的集合 Log_id
SELECT Log_id FROM tbl_gg_table_init WHERE Gg_id=@Gg_id AND Init_fir_sec=@Init_fir_sec


--打开游标
OPEN Cursor_Order


--游标下移
FETCH next FROM Cursor_Order
INTO @Log_id


WHILE @@fetch_status=0  --状态为0说明,未结束,继续执行游标
BEGIN


SELECT @maxOrderid=isnull(max(orderid),0)+1 FROM tbl_gg_table_init WHERE Gg_id=@Gg_id AND Init_fir_sec=@Init_fir_sec AND orderid IS NOT NULL
UPDATE tbl_gg_table_init SET orderid = @maxOrderid WHERE Log_id=@Log_id

//游标下移
FETCH next FROM Cursor_Order 
INTO @Log_id


END
CLOSE Cursor_Order --关闭游标
DEALLOCATE Cursor_Order