У меня проблема с моей StoredFunction.Это выглядит тривиально, но я не вижу способа это исправить.
БД Oracle содержит функцию со следующей сигнатурой и некоторым простым телом
FUNCTION MY_FUNC (CARD_NUM_IN in char, CARD_ID number default null)
return number;
Я выполняю вызов функции какследующим образом:
SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(dataSource);
SqlParameterSource sps = new MapSqlParameterSource()
.addValue("CARD_NUM_IN", ' ', OracleTypes.CHAR)
.addValue("CARD_ID", Long.parseLong(cardId), OracleTypes.NUMBER);
simpleJdbcCall
.withFunctionName("MY_FUNC")
.withCatalogName(PACKAGE_NAME);
Object result = simpleJdbcCall.executeFunction(Object.class, sps);
Результат:
java.sql.SQLException: ORA-17132 Invalid conversion requested
Если я удаляю параметр Char из своей функции и прекращаю его передачу, сохраненная функция работает как положено.
Какя должен передать Char (изменение сигнатуры функции невозможно)?