第一次写存储过程


@Controller
Map<String, String> resultMap = new HashMap<String, String>(); userService.ytrkk(resultMap); @Override public void ytrkk(Map<String, String> resultMap) { tuserMapper.ytrkk(resultMap); } <select id="ytrkk" statementType="CALLABLE" parameterType="java.util.HashMap"> <![CDATA[ {call ytrkk (#{p_shbh,mode=IN,jdbcType=VARCHAR},#{p_kkje,mode=IN,jdbcType=VARCHAR},#{p_macno,mode=IN,jdbcType=VARCHAR}, #{p_out,mode=OUT,jdbcType=VARCHAR})} ]]> </select>

 



create or replace procedure ytrkk
/* 缘天然扣款信息 p_shbh 商户编号, p_kkje 扣款金额, p_macno 物理卡号, */ ( p_shbh varchar2, p_kkje varchar2, p_macno varchar2, p_out out varchar2 ) as ye number(8):=0;--余额 kzt number(1):=0;--卡状态 c_shbh varchar2(10):=0;--查询出来的商户编号判断是否匹配 begin --查询余额、状态 select nvl(max(czje-xfje),-1),nvl(max(zt),-1),nvl(max(gid),1)into ye,kzt,c_shbh from T_ZX_CARD where macno = p_macno ; if c_shbh =1 then p_out := '5';--卡号不存在 return; end if; if c_shbh <>p_shbh then p_out := '2';--商户与卡不匹配 return; end if; if kzt <>0 then p_out := '4';--卡未激活 return; end if; if ye<p_kkje then p_out := '3';--余额不足 return; end if; --更新卡余额 update T_ZX_CARD set xfje = xfje + to_number(p_kkje),xfcs=xfcs+1 where macno = p_macno and gid =p_shbh; --插入扣款表 insert into T_YTR_KK(KKJE, MACNO) values (p_kkje, p_macno); p_out := '1';--保存成功 COMMIT; EXCEPTION WHEN OTHERS THEN ROLLBACK; p_out := '0'; --错误 --写错误日志 insert into PRO_ERROR_LOG (cname, opt_content) values ('线下扣款储过程错误', '[p_shbh]:' || p_shbh || '[p_kkje]:' || p_kkje || '[p_macno]:' || p_macno ); COMMIT; RETURN; end ytrkk;

 

posted @ 2017-08-16 17:09  彈指一揮間  阅读(168)  评论(0)    收藏  举报