Spring框架的SimpleJdbcCall是否支持可选的存储过程参数?

问题描述 投票:0回答:1

所以我在 Oracle 数据库中存储了带有默认参数和数据库内参数的存储过程:

procedure cool_procedure(
    i_id          in      number
  , i_number        in      varchar2
  , i_check  in      number default 1
  , i_commit           in      number := GLOBALS.commit_yes
  , o_result         out     number
);

我可以用 simplejdbccall 来调用它而不设置

i_comit
i_check
吗?

这就是我真正想做的:

var jdbcCall = simpleJdbcCallFactory.create(jdbcTemplate)
.withSchemaName("SCHEMA")
.withCatalogName("CATALOG")
.withProcedureName("cool_procedure")
.withoutProcedureColumnMetaDataAccess()
.declareParameters(
        new SqlParameter("i_id", Types.NUMERIC),
        new SqlParameter("i_name", Types.VARCHAR),
        new SqlParameter("i_check", Types.NUMERIC),
        new SqlParameter("i_commit", Types.NUMERIC),
        new SqlOutParameter("o_result", Types.NUMERIC)
);

var paramMap = new MapSqlParameterSource()
.addValue("i_id", id)
.addValue("i_name", name);

var out = new LinkedCaseInsensitiveMap<>();
out.putAll(jdbcCall.execute(paramMap));

但是我收到一个错误,表明我错过了必需的参数...

那么我可以不添加

i_check
i_commit
paramMap 
MapSqlParameterSource
吗?

java sql spring oracle simplejdbccall
1个回答
0
投票

尝试使用

 .withoutProcedureColumnMetaDataAccess()
 .withNamedBinding()
© www.soinside.com 2019 - 2024. All rights reserved.