使用PL/SQL操作Oracle数据库。
存储过程的书写:
连接的实例上右键-->New-->Program Window-->Procedure。然后输入储存过程名称就可以编写存储过程。
create or replace procedure CALYONCHECK(
i_date in varchar2,
o_cursor out sys_refcursor--系统的游标类型,查询的结果存放这
) is
begin
open o_cursor for ---将查询结果赋值给输出参数
select 0 as c_type,('基金账号:'||t.c_fundacco) as message
from tconfirm t
left join terrormess e
on t.c_cause = e.c_cause
where t.c_status<>'0000'
and t.d_cdate = i_date;
end CALYONCHECK;
Mybatis XML中核心书写:
<resultMap id="TEST" type="java.util.Map">
<result column="c_type" property="c_type" jdbcType="VARCHAR" />
<result column="c_message" property="c_message" jdbcType="VARCHAR" />
</resultMap>
<select id='calyonCheckData' statementType="CALLABLE" parameterType="java.util.HashMap">
{call CALYONCHECK(#{i_date,mode=IN,jdbcType=VARCHAR},
#{o_cursor,mode=OUT,jdbcType=CURSOR,resultMap=TEST}
)}
</select>
相关java代码:
mapper接口中对应的方法:
public void calyonCheckData(Map<String,Object> dataMap);
service中的方法
public xxx xxx(....String date...){
Map<String,Object> map = new HashMap<String,Object>();
map.put("i_date","20150511");
map.put("o_cursor",new ArrayList<Map<String,String>>());
xxxMapper.calyonCheckData(map);
List<Map<String,Object>> list = (List<Map<String,Object>>)
map.get("o_cursor");//list为储存过程结果集合
...........
}