Я пытаюсь обновить строку таблицы Oracle, используя jdbcTemplate, следующим образом
String sql = "update EVENTS set status = null where TEMP_ID IN (select TEMP_ID from EVENTS where STATUS = 'COMPLETE' and EXCHANGE_ID IN (?) )";
Map<String, Object> paramMap = new HashMap<String, Object>();
List<Long> longValues = new ArrayList<Long>();
longValues.add(1);
longValues.add(2);
paramMap.put("EXCHANGE_ID", longValues);
int rowsAffected = this.jdbcTemplate.update(sql,paramMap,Long.class);
, где EXCHANGE_ID - это столбец в таблице EVENTS с типом данных NUMBER (6,0).
КогдаЯ пытаюсь запустить вышеуказанную программу, она выдает исключение следующим образом
PreparedStatementCallback;исключение из категории SQLException для SQL [обновить СОБЫТИЯ установить состояние = ноль, где TEMP_ID IN (выберите TEMP_ID из СОБЫТИЙ, где STATUS = 'COMPLETE' и EXCHANGE_ID =?)];Состояние SQL [99999];код ошибки [17004];Неверный тип столбца;вложенным исключением является java.sql.SQLException: недопустимый тип столбца
Редактировать: Количество параметров в предложении In не является фиксированным.поэтому число параметров может быть 2, 3 в зависимости от пользователя.
для простоты я добавил следующие строки в коде
longValues.add(1);
longValues.add(2);
На самом деле я получаю параметры из формы.Я только что добавил часть кода в свой вопрос.
Из-за некоторых ограничений я могу использовать только?в моем параметре место в моем sql запросе нет: EXCHANGE_ID