码迷,mamicode.com
首页 > 数据库 > 详细

Oracle 带回滚的存储过程

时间:2017-04-12 13:34:06      阅读:471      评论:0      收藏:0      [点我收藏+]

标签:cep   val   type   回滚事务   rac   end   after   begin   charge   

create or replace procedure PROC_insertUserAmount
(
     userid  number,
     msgtype number,
     amountvalue number,
     financeType  number,
     createUserid number,
     msgId nvarchar2,
     remark nvarchar2,
     addtime date
)
is
     v_cnt number;
     v_beforevalue number;
     v_aftervalue number;
     v_userid number;
     v_msgtype number;
begin
  v_userid:=userid;
   v_msgtype:=msgtype;


   select count(*)into v_cnt from dual
       where exists (select 1 from user_amountinfo t where t.userid=v_userid and t.msgtype=v_msgtype);
   if  v_cnt>0 then
       update user_amountinfo set amount=amount+amountvalue  where user_amountinfo.userid=v_userid and user_amountinfo.msgtype=v_msgtype;
   else
       insert into user_amountinfo (userid,msgtype,amount)values(userid,msgtype,amountvalue);
   end if;

   select amount-amountvalue,amount into v_beforevalue,v_aftervalue from user_amountinfo t where t.userid=v_userid and t.msgtype=v_msgtype;

   insert into user_amountinfodetails(userid,msgtype,beforevalue,amountvalue,aftervalue,financetype,createUserid,msgid,remark,addtime)
       values(userid,msgtype,v_beforevalue,amountvalue,v_aftervalue,financetype,createUserid,msgid,remark,addtime);

   if(financetype<>2)then
       insert into user_amountinforecharges(id,userid,msgtype,beforevalue,amountvalue,aftervalue,financetype,createUserid,msgid,remark,addtime)
       values(seq_user_amountinfodetails_id.currval,userid,msgtype,v_beforevalue,amountvalue,v_aftervalue,financetype,createUserid,msgid,remark,addtime);
   end if;

   if(financetype=1) then--类型为充值
        update user_amountinfo set rechargeamount=rechargeamount+amountvalue  where user_amountinfo.userid=v_userid and user_amountinfo.msgtype=v_msgtype;
   end if;
   commit;
exception--出现异常,回滚事务,抛出异常
  when others then
    rollback;
    raise;
end;

 

Oracle 带回滚的存储过程

标签:cep   val   type   回滚事务   rac   end   after   begin   charge   

原文地址:http://www.cnblogs.com/rengke2002/p/6698211.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!