java – SQL state [null];错误代码[0]; ORA-00900:带有jdbcTemplate的无效SQL语句

我从jdbcTemplate执行以下查询时遇到异常

update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=?

以下是例外

org.springframework.jdbc.UncategorizedSQLException:
PreparedStatementCallback; uncategorized SQLException for SQL [update
TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=?]; SQL state [null];
error code [0]; ORA-00900: invalid SQL statement

TEMP_BRD_STATS是我的表名,STATS和BRDC_STAT_ID是我表中的列

注意: – STATS列允许使用null

但是,我可以通过提供有效的BRDC_STAT_ID列值在sql developer中成功执行查询.

例如

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代码之后值变为null但仍然抛出异常.一种奇怪的场景.

解决方法:

参数?显然没有填写.也许一些参数如:

new Object[] { brdStatId }

在一般的JDBC中,它可能不是使用PreparedStatement.executeUpdate()而是使用基类版本Statement.executeUpdate(String sql).

代码添加后有问题:

啊,查询(SELECT)和更新(INSERT / UPDATE)混淆了:

this.jdbcTemplate.update("update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=?", 523);
上一篇:spring – JdbcTemplate – 使用SQL MERGE插入或更新Oracle BLOB


下一篇:mockjs使用指南