看起来jdbc模板在调用存储过程时没有将params传递给hana db。 根据我们的分析,spring jdbc实现不会从元数据中识别过程参数。 我们使用标准代码来调用proc。
simpleJdbcCall = new SimpleJdbcCall(datasource).withSchemaName(getSchemaString())
.withProcedureName(name);
results = simpleJdbcCall.execute(params);
我们尝试搜索网但是找到了令人满意的解决方案 我也尝试过设置参数表达式
simpleJdbcCall = new SimpleJdbcCall(datasource).withSchemaName(getSchemaString())
.withProcedureName(name);
SqlParameterSource in = new MapSqlParameterSource().addValues(params);
results = simpleJdbcCall.execute(in);
这里params是hashmap。 问题仍然存在相同
答案 0 :(得分:1)
来自javadoc(强调是我的):
元数据处理基于JDBC驱动程序提供的DatabaseMetaData。由于我们依赖于JDBC驱动程序,因此"自动检测"只能用于已知提供准确元数据的数据库。目前包括Derby,MySQL,Microsoft SQL Server,Oracle,DB2,Sybase和PostgreSQL。 对于任何其他数据库,您需要明确声明所有参数。