ibatis通过Map封装参数调用存储过程
2013-07-17 14:15
281 查看
一、存储过程如下(领导写的)
注意点:该存储过程不是我写的,公司所有。
二、在ibatis配置文件中添加配置
注意点:parameterMap中的参数顺序要对应三个问号顺序,也就是存储过程的3个参数顺序,in表示入参,out表示出参
三、调用
注意点:这里map要封装所需要的参数,只有两个,ibatis会自动把返回结果也放到map里面去
CREATE OR REPLACE PROCEDURE agent_UIMOrIMEICheck_pro ( I_CARD_NO IN VARCHAR2, --UIM卡或手机串号 I_CARD_FLAG IN NUMBER, --标识 1. 验证UIM卡是否已经被使用 2.验证补卡设备号是否当天多次补卡 O_RETURN_VALUE OUT VARCHAR2 --返回结果 ) AS V_COUNT NUMBER; V_agentOperid varchar2(30); V_time date; V_orderId varchar2(30); /****************************************************************************** 该存储过程用于判断UIM卡号是否已经使用过或手机串号是否已经进行空机核销或使用 Authority wanglongqiang 修改标识:去掉串号验证逻辑,完善UIM卡验证 传入标识入参改为传入设备号 ******************************************************************************/ BEGIN O_RETURN_VALUE := 'SUCCESS'; if(I_CARD_FLAG=1)then --验证UIM卡输入是否正确 if(lengthb(I_CARD_NO)<>19) then O_RETURN_VALUE:='系统检测您输入的ICCID(UIM)卡号存在问题,请确保是否为19位或是否输入空格!'; elsif(substr(I_CARD_NO,1,7)<>'8986031') then O_RETURN_VALUE:='系统检测您输入的ICCID(UIM)卡号存在问题,请确保是否以8986031打头!'; else --uim卡使用情况验证 uim卡使用 --1.判断产品新装里面是否用到该白卡 SELECT COUNT (business_orderId) INTO V_COUNT FROM log_businessaccept WHERE NVL (business_orderId, '0') <> '0' and issuccess in ('订单成功','前台待缴款') AND UIM_NUMBER = I_CARD_NO; IF (V_COUNT = 0) then --查询补卡信息表中是否有记录存在 select count(order_id) into V_COUNT from LOG_REPAIRCARD where nvl(order_id,'0')<>'0' and is_success in ('订单成功','前台待缴款') and uimnumber= I_CARD_NO; if(V_COUNT=0) then O_RETURN_VALUE := 'SUCCESS'; else select agent_id,business_date,order_id into V_agentOperid,V_time,V_orderId from log_repaircard where nvl(order_id,'0')<>'0' and is_success in ('订单成功','前台待缴款') and flag=0 and uimnumber= I_CARD_NO; O_RETURN_VALUE:='代理商工号'||V_agentOperid||'于'||to_char(V_time,'yyyy-MM-dd')||'补(换)卡已使用该UIM卡,订单号为:'||V_orderId||'请更换新卡!'; end if; else select agent_operid,business_date,business_orderid into V_agentOperid,V_time,V_orderId from log_businessaccept WHERE NVL (business_orderId, '0') <> '0' and issuccess in ('订单成功','前台待缴款') AND UIM_NUMBER = I_CARD_NO; O_RETURN_VALUE:='代理商工号'||V_agentOperid||'于'||to_char(V_time,'yyyy-MM-dd')||'新装受理已使用该UIM卡,订单号为:'||V_orderId||'请更换新卡!'; end if; end if; else select count(*) into V_COUNT from LOG_REPAIRCARD where nvl(order_id,'0')<>'0' and is_success in ('订单成功','前台待缴款') and to_char(business_date,'yyyy-MM-dd')=to_char(sysdate,'yyyy-MM-dd') and businessnumber=I_CARD_NO; if(V_COUNT=0) then O_RETURN_VALUE := 'SUCCESS'; else select agent_id,business_date,order_id into V_agentOperid,V_time,V_orderId from log_repaircard where nvl(order_id,'0')<>'0' and is_success in ('订单成功','前台待缴款') and to_char(business_date,'yyyy-MM-dd')=to_char(sysdate,'yyyy-MM-dd') and businessnumber=I_CARD_NO and rownum<2; O_RETURN_VALUE:='代理商工号'||V_agentOperid||'于'||to_char(V_time,'yyyy-mm-dd hh24:mi:ss')||'(今天)已对该设备号进行补(换)卡,订单号为:'||V_orderId||',请到订单查询菜单查询订单状态信息!'; end if; end if; EXCEPTION WHEN NO_DATA_FOUND THEN O_RETURN_VALUE := 'SUCCESS'; WHEN OTHERS THEN O_RETURN_VALUE := 'SUCCESS'; END agent_UIMOrIMEICheck_pro;
注意点:该存储过程不是我写的,公司所有。
二、在ibatis配置文件中添加配置
<parameterMap class="map" id="checkParam"> <parameter property="cardNo" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/> <parameter property="cardFlag" jdbcType="DECIMAL" javaType="java.lang.Integer" mode="IN"/> <parameter property="result" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/> </parameterMap> <procedure id="checkUIMorIMEI" parameterMap="checkParam"> <![CDATA[ {call agent_UIMOrIMEICheck_pro(?,?,?)} ]]> </procedure>
注意点:parameterMap中的参数顺序要对应三个问号顺序,也就是存储过程的3个参数顺序,in表示入参,out表示出参
三、调用
public String checkCardNo(String cardNo, String cardFlag) { Map map = new HashMap(); map.put("cardNo", cardNo); map.put("cardFlag", Integer.parseInt(cardFlag)); try{ getSqlMapClientTemplate().insert("DLS_LOG_BUSINESSACCEPT.checkUIMorIMEI",map); String result=(String)map.get("result"); return result; }catch(Exception ex){ } }
注意点:这里map要封装所需要的参数,只有两个,ibatis会自动把返回结果也放到map里面去
相关文章推荐
- ibatis通过Map封装参数调用存储过程
- ibatis-返回结果通过resultMap封装
- Retrofit简单封装使用--Post请求封装请求体、Get请求通过参数、map方式构建url
- ibatis调用mysql带OUT类型参数的存储过程
- ibatis调用存储过程(无返回参数)
- ibatis教程之调用带参数的存储过程
- ibatis教程之调用带参数的存储过程
- ibatis调用存储过程(带输出参数的存储过程)
- Ibatis调用存储过程返回参数
- EF 调用存储过程、返回多结果集和OUTPUT参数 等问题
- IBatis.Net学习笔记(七):在IBatis.Net中调用存储过程
- 极为简单的Spring+Ibatis调用存储过程
- WebApi系列~通过HttpClient来调用Web Api接口~续~实体参数的传递
- jQuery中通过ajax调用webservice传递数组参数的问题实例详解
- WebApi系列~通过HttpClient来调用Web Api接口~续~实体参数的传递
- ibatis调用存储过程
- hibernate里使用jdbc方式调用oracle带游标返回参数的简单分页存储过程
- c#调用存储过程输出参数
- MSSQLSERVER数据库- C#里调用存储过程,多参数查询,个人记录
- 无法通过方法调用转换将实际参数android.app.FragmentManager转换为FragmentTransaction