一、存储过程如下(领导写的)

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封装参数调用存储过程的更多相关文章

  1. MySQL 存储过程实例 与 ibatis/mybatis/hibernate/jdbc 如何调用存储过程

    虽然MySQL的存储过程,一般情况下,是不会使用到的,但是在一些特殊场景中,还是有需求的.最近遇到一个sql server向mysql迁移的项目,有一些sql server的存储过程需要向mysql迁 ...

  2. Spring JDBC调用存储过程

    以下示例将演示spring jdbc如何调用存储过程.将通过调用存储过程来读取Student表中的一个可用记录.将传递一个学生ID并获取学生记录信息. 语法: SimpleJdbcCall jdbcC ...

  3. 【Mybatis】MyBatis调用带有返回结果、output参数的存储过程上与ibatis的区别

    用过mybatis的应该都知道它是ibatis被Google收购后重新命名的一个工程,因此也做了大量升级.本文就来介绍下两者在调用存储过程上的一点区别,ibatis有一个专门的标签<proced ...

  4. 使用httpClient调用接口,参数用map封装或者使用JSON参数,并转换返回结果

    这里接口用表存起来,标记请求方式,然后接受参数,消息或者请求参数都可以, 然后先是遍历需要调用的接口,封装参数,再分别调用get与post即可,没有微服务还是得自己写 //消息转发-获取参数中对应参数 ...

  5. ibatis调用存储过程(无返回参数)

    ibatis调用存储过程例子: java: getSqlMapClientTemplate().insert(sql, paraMap) ibatis xml: <parameterMap id ...

  6. Mybatis 调用存储过程,使用Map进行输入输出参数的传递

    做个记录,以备后用 java代码: public String texuChange() throws Exception {        try {                         ...

  7. ibatis 调用存储过程

      ibatis 调用存储过程 CreationTime--2018年8月15日19点38分 Author:Marydon 1.返回系统游标集合 第一步:返回值,将返回值封装到HashMap中 < ...

  8. Java和Ibatis调用存储过程并取得返回值详解

    Java和Ibatis调用存储过程并取得返回值详解 2011-07-19 17:33 jiandanfeng2 CSDN博客 字号:T | T 本文主要介绍了Java和Ibatis调用存储过程的方法, ...

  9. MyBatis调用存储过程,含有返回结果集、return参数和output参数

    Ibatis是我们经常使用的O/R映射框架,mybats是ibatis被Google收购后重新命名的一个工程,当然也做了大量的升级.而调用存储过程也是一次额C/S架构模式下经常使用的手段,我们知道,i ...

随机推荐

  1. 通过原生js的ajax或jquery的ajax获取服务器的时间

    在实际的业务逻辑中,经常是与时间相关的,而前端能获得的时间有两个:客户端的时间,服务器的时间. 客户端时间通过 javascript中的Date对象可以获取,如 var dt = new Date() ...

  2. hibernate懒加载和json序列化冲突

    因为懒加载这个对象属性只是一个代理对象,如果json直接当作一个存在的属性去序列化就会出现错误,所以就只能这样了,当然还有其他办法吧 或者在class上加上 @JsonIgnoreProperties ...

  3. cmake学习笔记(五)

    在cmake 学习笔记(三) 中简单学习了 find_package 的 model 模式,在cmake 学习笔记(四)中了解一个CMakeCache相关的东西.但靠这些知识还是不能看懂PySide使 ...

  4. BZOJ 1601 [Usaco2008 Oct]灌水

    1601: [Usaco2008 Oct]灌水 Time Limit: 5 Sec  Memory Limit: 162 MB Description Farmer John已经决定把水灌到他的n(1 ...

  5. jQuery报错:Uncaught ReferenceError: $ is not defined

    在使用jQuery的时候,发现有如下报错: Uncaught ReferenceError: $ is not defined  (anonymous function) 出现这个报错的原因: 1.j ...

  6. ThinkPHP - 加载第三方类库

    目录结构: 将核心的第三方目录放置在Apps下的Core目录中. 这样其他控制器便可以轻松访问. *为什么不直接放在ThinkPHP框架既有的第三方文件夹中,答案是便于升级,升级TP版本时,可直接替换 ...

  7. jquery的slideUp、slideDown、slideToggle等涉及滑动效果的一系列函数,在IE浏览器下有几处bug

    jquery的slideUp.slideDown.slideToggle等涉及滑动效果的一系列函数,在IE浏览器下有几处bug: 1. 因position引起的问题 影响:IE全系列 症状:在需要sl ...

  8. 面向对象程序设计-C++ Steam & Vector 【第三次上课笔记】

    大家可以下载后用Vim 或者 Sublime Text等文本编辑器查看 Conference: http://blog.csdn.net/candy1232009/article/details/70 ...

  9. iOS XMPP之常见错误一:(<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure>)

    在XMPP开发中,使用XMPPStream进行连接服务器后,验证过程中,比较常见的一个错误是 <failure xmlns="urn:ietf:params:xml:ns:xmpp-s ...

  10. SilkTest天龙八部系列7-动态对象识别

    在测试web应用时,我们常常需要面对web页面对象变化频繁,并且使用预定义方式识别对象慢的困难.为了解决这些问题,SilkTest引入了dynamic object recognition技术,它使用 ...