我使用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/

10-09 05:00