我有一个使用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执行此操作?
任何见解或帮助将不胜感激。感谢。