SQLserver2008,存储过程,游标的使用。
来源:互联网 发布:淘宝店铺排行榜怎么看 编辑:程序博客网 时间:2024/05/01 06:25
当我们需要用到 存储过程的时候,你会发现,有时候不仅仅是对数据的增删改查,经常需要对中间表的结果集进行操作,下面我先讲一下我这里的业务逻辑,然后再贴代码块,
我们微信上面由客户经理发放企业红包,需要粉丝们去抢,经理创建一个红包活动,没有被抢完的情况下,需要我们后面把红包剩余的钱返回给客户经理,首先我们判断所有需要返还的红包活动ID,然后根据每个活动ID去计算应该返还多少钱给客户经理。大概逻辑是就是这个样子,下面贴代码,代码也会有相应的注释。
--计算客户经理红包余额create proc DealRedPaperasdeclare @redTotal decimal(20,6) --客户经理红包总金额declare @redCount int --客户经理红包总数declare @getTotal decimal(20,6) --粉丝一共领用的红包总金额declare @getCount int --有多少粉丝领到了红包declare @redId varchar(32) --活动IDdeclare @redLeft decimal(20,6) --红包余额declare @redMid varchar(32) --经理ID--查询活动过期且active_flag=Y的数据declare c_redPaper cursor FAST_FORWARD forselect row_id,total,amount,mid from APP_SEND_PAPER_ACT where ACTIVE_FLAG='Y' and DELETE_FLAG='N' and GETDATE() > END_DATE
下面就需要用到游标了,遍历每一个红包活动,去计算每个红包活动还剩下多少钱。
--打开游标open c_redPaper--取第一条记录FETCH NEXT FROM c_redPaper into @redId,@redTotal,@redCount,@redMidWHILE @@FETCH_STATUS=0begin--根据活动ID查询领用情况select @getCount=count(1),@getTotal=SUM(isnull(TOTAL,0)/100) from APP_SEND_RECORD where ACT_ID=@redId --如果红包总个数大于领取的个数,则把剩余的钱退回给客户经理if @redCount > @getCountbeginset @redLeft=@redTotal-@getTotal --计算余额update APP_SEND_PAPER_ACT set ACTIVE_FLAG='N' where ROW_ID=@redId --修改红包的状态为Nupdate APP_MANAGER set M_AMOUNT=M_AMOUNT+@redLeft where ROW_ID=@redMid --把剩余的钱返还给客户经理end--遍历下一条数据FETCH NEXT FROM c_redPaper into @redId,@redTotal,@redCount,@redMidendCLOSE c_redPaperDEALLOCATE c_redPaper
这样就OK了,剩下的是写一个JOB,每天结算一下红包活动就OK了。
1 0
- SQLserver2008,存储过程,游标的使用。
- 存储过程使用游标
- 存储过程游标使用
- 带游标的存储过程的使用
- 存储过程及游标的使用
- oracle存储过程和游标的使用
- oracle存储过程与游标的使用
- PLSQL游标的使用_存储过程
- oracle存储过程和游标的使用
- oracle 存储过程和游标的使用
- 存储过程与游标的配合使用
- oracle存储过程和游标的使用
- Oracle 存储过程、游标的使用
- MySQL存储过程 游标循环的使用
- sql service 存储过程,游标的使用
- mysql存储过程以及游标的使用
- Mysql 存储过程游标的使用
- mysql 存储过程 -- 游标的使用
- 聊天(环信)
- ajax无刷新分页
- XListView 的配置
- Android .9图片的使用方法
- 第十四周项目二 两个成员的类模板(1)
- SQLserver2008,存储过程,游标的使用。
- 新的一天
- 全局变量EG、CG
- iOS 给TextView添加placeholder.
- Object-C Category和Extension的区别
- HDU 5344 MZL's xor
- 为什么有时可以在头文件可以定义变量,有时不行(变量重定义)。
- Sql_mode
- XML解析(pull解析)