扣费处理逻辑不清晰.分析业务处理流程,实际上可以这样的: 1. 由于不到一个月的业务不处理,所以所有处理条件中应该包含: BeginTime>=dateadd(month,-1,getdate())2. 由于余额不足和用户取消业务都会从包月表中删除该记录,所以这个处理用一条T-SQL就可以完成 delete from Account_UserMonth where BeginTime>=dateadd(month,-1,getdate()) --处理到一个月的业务 and (DF_Account_UserMonth_IsNoMoney=0 ---余额不足,不知道判断条件是否正确? or [Esc]-1 ) --用户取消
3. 处理扣费部分--定义游标 declare tb cursor local for select ..... from Account_UserMonth where BeginTime>=dateadd(month,-1,getdate()) --处理到一个月的业务 --因为已经预先删除了不满足扣费的数据,所以不再需要其他条件 open tb --打开游标 fetch tb into @xx --循环游标 while @@fetch_status=0 begin .....扣费处理 fetch tb into @xx --循环游标 end close tb --关闭游标 deallocate tb --释放游标
1. 由于不到一个月的业务不处理,所以所有处理条件中应该包含:
BeginTime>=dateadd(month,-1,getdate())2. 由于余额不足和用户取消业务都会从包月表中删除该记录,所以这个处理用一条T-SQL就可以完成
delete from Account_UserMonth
where BeginTime>=dateadd(month,-1,getdate()) --处理到一个月的业务
and (DF_Account_UserMonth_IsNoMoney=0 ---余额不足,不知道判断条件是否正确?
or [Esc]-1 ) --用户取消
declare tb cursor local
for
select .....
from Account_UserMonth
where BeginTime>=dateadd(month,-1,getdate()) --处理到一个月的业务
--因为已经预先删除了不满足扣费的数据,所以不再需要其他条件
open tb --打开游标
fetch tb into @xx --循环游标
while @@fetch_status=0
begin
.....扣费处理
fetch tb into @xx --循环游标
end
close tb --关闭游标
deallocate tb --释放游标