Как вызвать процедуру Oracle с параметрами 2 IN и 1 OUT VARCHAR2, используя Spring в Java 6 - PullRequest
0 голосов
/ 23 октября 2019

У меня есть процедура 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, определенную в прилагаемой области действия

Не могли бы вы дать мне подсказку по этому поводу, пожалуйста?

Спасибо, Миккуту.

...