@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;