存储过程中常常须要返回结果集。
Mysql中直接用select就可以返回结果集。而oracle则须要使用游标来返回结果集。
这一点Mysql相对照较方便。例如以下代码就可以实现输出结果集:
存储过程定义:
DELIMITER $$
DROP procedure IF EXISTS pro_sql_data1 $$
CREATE procedure pro_sql_data1(in sear_name varchar(2000))
BEGIN
if sear_name is not null and sear_name!='' then
select id,name,date_format(create_time,'%Y-%m-%d') as repDate from ad_place where
name like concat('%',sear_name,'%');
ELSE
select id,name,date_format(create_time,'%Y-%m-%d') as repDate from ad_place;
end if;
END$$
DELIMITER;运行结果:
在mybatis中调用存储过程,然后获取该结果集:
1、xml配置文件
{call pro_sql_data(
#{obj,jdbcType=VARCHAR,mode=IN}
)
}
java代码
public String query(String param) throws Exception {
logger.info(param);
Map queryMap = new HashMap();
queryMap.put("obj", param);
//List listIis1 = reportDao.select4MapParam(queryMap, "currentSql");
List listIis2 =reportDao.select4MapParam(queryMap,"test123");
return JSONArray.fromObject(listIis2).toString();
}
注:有上面可知,mysql存储过程中能够直接使用select语句返回结果集,并且mybatis能够直接使用list接收这个结果集(无需游标)。
參考文章:http://yhjhappy234.blog.163.com/blog/static/316328322012455714892/