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

Paw*_*til 3 java oracle spring jdbctemplate

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

update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=?
Run Code Online (Sandbox Code Playgroud)

以下是例外

org.springframework.jdbc.UncategorizedSQLException:PreparedStatementCallback; 未分类SQL的SQLException [更新TEMP_BRD_STATS SET STATS = null WHERE BRDC_STAT_ID =?]; SQL状态[null]; 错误代码[0]; ORA-00900:无效的SQL语句

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;
Run Code Online (Sandbox Code Playgroud)

编辑:以下是JAVA代码

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

尽管抛出了异常,但在执行上述代码后,列值会发生变化.

假设我的列STATS具有'SUCCESS'值并且在执行上面的java代码之后值变为null但仍然抛出异常.一种奇怪的场景.

Joo*_*gen 5

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

new Object[] { brdStatId }
Run Code Online (Sandbox Code Playgroud)

在一般的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);
Run Code Online (Sandbox Code Playgroud)