这是我所拥有的:
功能规格:
FUNCTION GET_SOME_DATA RETURNS REF CURSOR
IN_LOOK_UP_PARAM VARCHAR2 IN
Java 代码片段:
SimpleJdbcCall call =
new SimpleJdbcCall(jdbcTemplate)
.withCatalogName(SP_PACKAGE_NAME)
.withFunctionName("GET_SOME_DATA")
.declareParameters(
new SqlOutParameter(
SP_OUT_PARAM_RESULTS,
OracleTypes.CURSOR,
HEADER_ROW_MAPPER))
.declareParameters(new SqlParameter(SP_IN_PARAM, Types.VARCHAR))
.withoutProcedureColumnMetaDataAccess()
.withReturnValue()
.returningResultSet(SP_OUT_PARAM_RESULTS, HEADER_ROW_MAPPER);
call.setFunction(true);
call.compile();
Map<String, Object> resultMap = call.execute(
new MapSqlParameterSource().addValue(SP_IN_PARAM, lookupId));
不调用行映射器方法 resultMap 包含SP_OUT_PARAM_RESULTS
值为 null 的键。
当尝试对此进行调试时,在 Spring 库代码中的过程执行后的某个时刻,更新计数返回为 -1,因此调用行映射器的代码路径被跳过。
知道我在任何 oracle 函数/简单 Jdbc 调用中可能做错了什么吗?