求助java调用存储过程,报错:Parameter number 2 is not an OUT parameter

William_Wei007 2018-12-11 02:27:20
代码如下:

存储过程:
create PROCEDURE get_redbag_name(in p_id int ,out p_name VARCHAR(50))
begin
select name from qb_redbag_ticket where id = p_id into p_name ;
end ;



java mapper.xml调用方式:
<select id="findById" statementType="CALLABLE" parameterMap="homeVO">
{call get_redbag_name(?,?)}
</select>

<parameterMap type="map" id="homeVO">
<parameter property="p_id" jdbcType="INTEGER" mode="IN"/>
<parameter property="p_name" jdbcType="VARCHAR" mode="OUT"/>
</parameterMap>



dao层:

public  List<Map> findById(Map pram);



biz层:
public  void findById(Map pram){
setDb(0, MASTER);
redbagTicketDao.findById(pram);
}


service:
public void  findById(Map bo){
redbagTicketBiz.findById(bo);
System.out.println(bo.get("p_name"));
}


rest层:

@SuppressWarnings({ "rawtypes", "unchecked" })
@RequestMapping(value = "/findById", method = RequestMethod.POST)
public Map queryRd(@RequestBody Map bo) {
log.debug("查询红包lname--" + JSON.toJSONString(bo));
try {
LinkedHashMap linkedHashMap = new LinkedHashMap();
redbagTicketService.findById(bo);
return super.returnSuccessInfo(linkedHashMap);
} catch (Exception e) {
log.error("异常信息- 查询红包name--系统异常:" + JSON.toJSONString(bo), e);
return super.returnFailtrueInfo(e);
}
}



test案例为:
@Test
public void findById(){

uri = "http://localhost:8080/front.onigiri/redbag/findById";

Map map = new HashMap<>();

map.put("p_id", 198898);
map.put("p_name", "");

RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("application/json; charset=utf-8"));
headers.set("Accept-Charset", "UTF-8");
HttpEntity entity = new HttpEntity(JSON.toJSONString(map),headers);
ResponseEntity response = restTemplate.exchange(uri,HttpMethod.POST, entity, Map.class);
LinkedHashMap responseMap = (LinkedHashMap)response.getBody();
System.out.print(responseMap);
assertTrue(true);

}



已排查信息:
1、数据库中有存储过程。
2、存储过程名称无错
3、已设置了权限:
 grant select,insert,update,delete  on fantuan.* to root@'localhost' identified by 'xxx';

grant execute on procedure fantuan.get_redbag_name to root@'localhost' identified by 'xxx';

grant select on mysql.proc to root@'localhost' identified by 'xxx';


FLUSH PRIVILEGES ;


4、链接数据库的位置也增加了 noAccessToProcedureBodies=true

以上方式都尝试了。依然错误。请各位知晓的朋友深处援助之手吧。谢谢啦
...全文
1045 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
William_Wei007 2018-12-13
  • 打赏
  • 举报
回复
引用 1 楼 bcsflilong 的回复:
希望给一个完整的操作信息 另外 配置文件中使用的用户直接登录mysql 然后 call get_redbag_name(11) 看看怎样
在此项目中,直接在mapper.xml文件中写SQL 是可以查询信息的。
William_Wei007 2018-12-13
  • 打赏
  • 举报
回复
引用 1 楼 bcsflilong 的回复:
希望给一个完整的操作信息 另外 配置文件中使用的用户直接登录mysql 然后 call get_redbag_name(11) 看看怎样
在客户端执行 set @name =''; call get_redbag_name(11,@name); select @name 是没问题的,因为有2个参数。 所以您这个 call get_redbag_name(11) 是不可以的。 会出现
[SQL]call  get_redbag_name(11);
[Err] 1318 - Incorrect number of arguments for PROCEDURE fantuan.get_redbag_name; expected 2, got 1
完整的信息? 没太理解。 这个就是springmvc项目,然后写了test案例,调用接口。
bcsflilong 2018-12-11
  • 打赏
  • 举报
回复
希望给一个完整的操作信息
另外 配置文件中使用的用户直接登录mysql 然后 call get_redbag_name(11) 看看怎样
敬告1:本课程基于最新版FFmpeg4.3.1, 是从一个商用产品中抽离而出,全程手把手教学。敬告2:本课程基于Java+Tomcat,C++方向的学员,不用购买此课程。 我将带领大家亲手开发一套WEB在线的基于Java语言的音视频转码系统 您将收获:用Java语言开发WEB在线音视频转码学习商用音视频产品的标准流程学习Java应用ffmpeg音视频的功能学习音视频的基础理论 学习SSH框架的灵活应用-------------------------------------------------------------------主要模块包括:1、标准文档:    需求说明书、系统分析、概要设计、数据结构、编码、测试、总结、面试技巧等。2、Java编码:   SSH框架,标准流程,可以自由扩展。3、音视频转码:最新版FFmpeg4.3.1,灵活的转码模板,可以自由扩展。4、音视频理论:讲解基础的音视频理论,帮助小白快速入门。5、面试技巧:    音视频方向的工作,薪资偏高,但要求苛刻。-------------------------------------------------------------------具体的课程目录参考如下: B/S音视频转码器简介与概览5 需求规格说明书5 系统分析与设计15 数据结构设计27数据库设计30Java+Tomcat+Eclipse开发环境配置35Java+SSH框架搭建与整合43界面设计49编码51左侧导航树58B/S音视频转码器总结与分析66 简历包装与面试技巧67-------------------------------------------------------------------音视频是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学基础理论,而是直接做项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢? 因为没有学习音视频的基础理论,就比如学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂。所以呢,一定要认真学习基础理论,然后再学习播放器、转码器、非编、流媒体直播、视频监控、等等。  梅老师从事音视频与流媒体行业18年;曾在永新视博、中科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。  

67,516

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧