过程:
---------------------
create or replace
PROCEDURE PRO_RETURE_CURSOR(modelid varchar2,CUR OUT varchar2)
AS
BEGIN
CUR := 'SELECT * FROM TA_AREA t'||modelid;
END;
----------------------
mybatis配置
-----------------
<resultMap type ="java.util.Map" id="cursorMap"><!--配置返回游标中别名对应的resultMap -->
<result column ="id" property="id" />
<result column ="field1" property="field1" />
<result column ="field2" property="field2" />
</resultMap >
<select id="callReturnArgs" statementType="CALLABLE" parameterType="java.util.Map">
<!-- 这个是测试用的 获取返回参数-->
{call PRO_RETURE_CURSOR(#{modelid,jdbcType=VARCHAR,mode=IN},
#{CUR,mode=OUT,jdbcType=VARCHAR})}
</select>
java 代码:
------------------------
/**
*
* @author:zhu.chunsen
* @Description:测试方法 :获取返回的参数,,注意,与返回的游标是不一样的
* @time:2017年1月12日 下午3:21:42
* @param :
* @return:
*/
public void callRetunArgs(){
HashMap<String,Object> statMap = new HashMap<String,Object>();
/*设定游标结果写入的变量*/
statMap.put("modelid", "45");
statMap.put("CUR", "");
/*获取返回的游标结果集*/
try{
attemperGameDao.callReturnArgs(statMap);//调用存储过程
String rs = (String) statMap.put("CUR", "");
System.out.println(rs);
}catch(Exception e){
e.printStackTrace();
}
}
-----------------------
在比对项目中,经常要调用存储过程,有以下几种情况
1:只要传入in 输入参数就可以了,
2:要传入in输入参数,返回out参数:==》本文就是这种
3:要传入in输入参数,返回out参数,还要返回游标cursor(结果集)