我使用SimpleJdbcCall调用存储过程。
public Map<String, Object> callStoredProcedure(SimpleJdbcCall jdbcCall, String procedureName, Map<String, Object> inParamMap) {
log.info("Calling stored procedure with name : " + procedureName);
SqlParameterSource in = new MapSqlParameterSource(inParamMap);
Map<String, Object> out = jdbcCall.withProcedureName(procedureName).execute(in);
return out;
}
其结果输出为
键=#result-set-1,值= [{= 17.00}]
当我得到这样的Value的类类型时,我感到困惑。
类class1 = entry.getValue()。getClass();
当我在数据库上执行时,我的sp返回17.00,但是在jdbcCall代码中得到= 17.00。
任何评论将有所帮助。
最佳答案
这是我从上一个项目构造我的SimpleJdbcCall的方法。
createUpdateUsersSP = new SimpleJdbcCall(contactManagerJdbcT)
.withProcedureName(pb.getCreateUpdateUsersSp())
.declareParameters(
new SqlOutParameter("p_user_id", Types.NUMERIC),
new SqlOutParameter("p_update_stamp", Types.VARCHAR),
new SqlOutParameter("p_status", Types.VARCHAR),
new SqlOutParameter("p_failure_reason", Types.VARCHAR),
new SqlParameter("p_vonage_id", Types.VARCHAR),
new SqlParameter("p_mobile_did", Types.VARCHAR),
new SqlParameter("p_email_address", Types.VARCHAR),
new SqlParameter("p_name", Types.VARCHAR),
new SqlParameter("p_netname_id", Types.NUMERIC),
new SqlParameter("p_user_status", Types.VARCHAR),
new SqlParameter("p_image_update_stamp", Types.TIMESTAMP),
new SqlParameter("p_has_profile_image", Types.VARCHAR),
new SqlParameter("p_nick_name", Types.VARCHAR));
createUpdateUsersSP.setAccessCallParameterMetaData(false);
您有可以向我们展示的类似内容吗?
关于java - Spring SimpleJdbcCall返回错误的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26124372/