У меня есть процедура Oracle, которая имеет 3 параметра (2 IN таблицы записей и 1 OUT VARCHAR2). Я хочу вызвать его из JAVA 6, используя spring.
Вот моя попытка:
private void insertAllMapping(ArrayList<List<String>> collection1, ArrayList<List<String>> collection2) {
jdbcTemplate.execute(new StringBuilder("DECLARE \n")
.append("PRAGMA AUTONOMOUS_TRANSACTION;\n")
.append("BEGIN \n")
.append("pkg_test.prc_test (?, ?, ?); ")
.append("END;").toString(), new CallableStatementCallback<Object>() {
@Override
public Object doInCallableStatement(CallableStatement callableStatement) throws SQLException, DataAccessException {
LobCreator lobCreator = null;
try {
callableStatement.setArray(1, (Array) collection1);
callableStatement.setArray(2, (Array) collection2);
callableStatement.registerOutParameter(3, Types.VARCHAR);
callableStatement.executeUpdate();
String poMessage = callableStatement.getString(3);
return null;
} catch (Throwable t) {
LOGGER.error("Error while cloasing lobCreator", t);
}
});
}
Ошибки возникают как в операторе setArray (...), так и говорят:
Невозможно сослаться на неконечную локальную переменную mappingRule, определенную в прилагаемой области действия
Не могли бы вы дать мне подсказку по этому поводу, пожалуйста?
Спасибо, Миккуту.