从jdbcTemplate执行以下查询时,我遇到异常
update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=?
以下是例外
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列允许为空
但是,我可以通过提供有效的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,但仍然引发异常。一种奇怪的情况。
答案 0 :(得分:5)
参数?
显然没有填写。也许像这样的参数:
new Object[] { brdStatId }
在一般的JDBC中,它可能不是使用PreparedStatement.executeUpdate()
而是使用基类版本Statement.executeUpdate(String sql)
。
有问题的代码添加后:
啊,查询(SELECT)和 update (INSERT / UPDATE)混合在一起:
this.jdbcTemplate.update("update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=?", 523);