Состояние SQL [null];код ошибки [0];ORA-00900: недопустимый оператор SQL с jdbcTemplate - PullRequest
0 голосов
/ 06 февраля 2019

Возникла исключительная ситуация при выполнении следующего запроса из jdbcTemplate

update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=?

, а следующим является исключение

org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback;исключение без категории для SQL [обновление TEMP_BRD_STATS SET STATS = ноль, ГДЕ BRDC_STAT_ID =?];Состояние SQL [null];код ошибки [0];ORA-00900: недопустимый оператор SQL

Где TEMP_BRD_STATS - это имя моей таблицы STATS, а BRDC_STAT_ID - столбец в моей таблице

Примечание: - null isразрешено для столбца STATS

Однако я могу успешно выполнить запрос в sql developer, предоставив допустимое значение столбца BRDC_STAT_ID.

например,

update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=523;

Редактировать: Ниже приведенокод JAVA

result = this.jdbcTemplate.query("update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=?",  new Object[] {523}, new QueryResultSetExtractor());

Значение столбца изменяется после выполнения кода выше, хотя генерируется исключение.

Предположим, что мой столбец STATS имеет значение 'SUCCESS', а после выполнения кода выше значение Javaменяется на ноль, но все равно это исключение.какой-то странный сценарий.

1 Ответ

0 голосов
/ 06 февраля 2019

Параметр ? явно не заполнен. Может быть, какой-то параметр, например:

new Object[] { brdStatId }

В общем случае JDBC мог использовать не PreparedStatement.executeUpdate(), а версию базового класса Statement.executeUpdate(String sql).


После добавления кода в вопросе:

А, запрос (ВЫБРАТЬ) и обновление (ВСТАВИТЬ / ОБНОВИТЬ) перепутал:

this.jdbcTemplate.update("update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=?", 523);
...