所以我在 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
吗?
尝试使用
.withoutProcedureColumnMetaDataAccess()
.withNamedBinding()