SQL状态[空];错误代码 [0]; ORA-00900: jdbcTemplate 的 SQL 语句无效
SQL state [null]; error code [0]; ORA-00900: invalid SQL statement with jdbcTemplate
我在从 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 是我的 table 名称统计信息,BRDC_STAT_ID 是我的 table
中的列
注意:- STATS 列允许为 null
不过,我可以通过提供有效的 BRDC_STAT_ID 列值在 sql 开发人员中成功执行查询。
例如
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()
,而是基础 class 版本 Statement.executeUpdate(String sql)
。
添加问题代码后:
啊,query (SELECT) 和 update (INSERT/UPDATE) 混淆了:
this.jdbcTemplate.update("update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=?", 523);
我在从 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 是我的 table 名称统计信息,BRDC_STAT_ID 是我的 table
中的列注意:- STATS 列允许为 null
不过,我可以通过提供有效的 BRDC_STAT_ID 列值在 sql 开发人员中成功执行查询。
例如
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()
,而是基础 class 版本 Statement.executeUpdate(String sql)
。
添加问题代码后:
啊,query (SELECT) 和 update (INSERT/UPDATE) 混淆了:
this.jdbcTemplate.update("update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=?", 523);