sql游标处理业务

批量更新数据

    --声明变量
    declare @caili varchar(50)
	declare @goldfi varchar(50)
	declare @memberoid varchar(50)
	declare @gold decimal(18,8)
	set @caili='68fa81c04b0a4bfb'
	set @goldfi='46138c927a5a4'

	--声明游标
	declare item_cursor cursor scroll
    for select  MemberOID,sum(gold) as g from t_order where  CreateTime >='2024-09-10' and CreateTime<='2024-09-11'and memberoid !='f90e7fc89f034d2595517e14e06026db'  group by MemberOID having sum(1) >1

	--打开游标
	open item_cursor
	--取数值进对应变量--into的变量数量必须与游标查询结果集的列数相同
    fetch First from item_cursor into @memberoid,@gold
	--提取成功,进行下一条数据的提取操作 
	while @@fetch_status=0  
	 begin
   
	   update T_MemberGold  set GoldCoin += @gold where memberoid = @memberoid and GoldOID=@caili

	   update T_MemberGold  set GoldCoin -= @gold where memberoid = @memberoid and GoldOID=@goldfi
       
	   --取下一条记录 --移动游标
	   fetch next from item_cursor into @memberoid ,@gold  
	 end
	 --关闭游标
	 close item_cursor
	 --释放游标
	 deallocate item_cursor

  

posted @ 2024-09-11 00:56  zhihua  阅读(10)  评论(0)    收藏  举报