由于参数数量不正确而无法访问过程体错误的SimpleJdbcCall失败

时间:2017-01-18 18:00:32

标签: java mysql spring stored-procedures spring-jdbc

我有一个使用dbcp2.BasicDataSource创建的SimpleJdbcCall对象,如下所示:

proc_searchDb = 
   new SimpleJdbcCall(jdbcTemplate.getDataSource())
          .withProcedureName(proc1)
          .returningResultSet(getResultSetFlag(),new DbManagerDataMapper());
proc_searchDb.compile();

在我使用的数据源中,我设置了noAccessToProcedureBodies=true,因为我的用户无权访问存储过程的主体,无法检索元数据。

我现在遇到的问题是,当我使用输入参数映射在execute上调用proc_searchDb时,它会失败并记录此错误:

jdbc4.MySQLSyntaxErrorException: Incorrect number of arguments for PROCEDURE my_db.searchDbByKey; expected 3, got 0

这就是我所说的:

Map<String, Object> inputMap = new HashMap<String,Object>();
inputMap.put("in_param1",0);
inputMap.put("in_param2",1);
inputMap.put("in_param3",2);
Map<String, Object> results = proc_getDbManager.execute(inputMap);

I read elsewhere that a possible solution to this是通过索引而不是名称&#34;来引用参数,但是我如何使用SimpleJdbcCall执行此操作?

任何见解或帮助将不胜感激。感谢。

0 个答案:

没有答案