如果 UPDATE 语句中的 WHERE 子句找不到任何结果,JdbcTemplate 会抛出表或视图不存在

问题描述 投票:0回答:1

我有一个简单的 UPDATE 语句,如下所示:

UPDATE SCHEMA.TABLE SET STATE = 'ACTIVE' WHERE STATE = 'INACTIVE'

在 SQL Developer 中,即使没有任何处于“INACTIVE”状态的记录,这种情况始终有效,在这种情况下返回“0 行已更新”。

但是,当使用

jdbcTemplate.update(query)
jdbcTemplate.execute(query)
执行相同的查询时,只有在执行时存在任何状态为“INACTIVE”的记录时,它才有效。否则,如果没有任何“INACTIVE”记录,我会得到:

class org.springframework.jdbc.BadSqlGrammarException StatementCallback; bad SQL grammar [UPDATE SCHEMA.TABLE SET STATE = 'ACTIVE' WHERE STATE = 'INACTIVE']; nested exception is java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

我希望无论是否有任何处于“INACTIVE”状态的记录都执行查询,但我不知道我缺少什么/要做什么才能实现这一点。

提前谢谢您!

spring oracle oracle-sqldeveloper jdbctemplate
1个回答
0
投票

我希望无论是否有任何处于“INACTIVE”状态的记录都执行查询,但我不知道我缺少什么/要做什么才能实现这一点。

您的查询就是这样做的。 但表

SCHEMA.TABLE
不存在或无法被执行该语句的数据库用户访问。

实际上,在许多更复杂的场景中您都会遇到此异常。请参阅 SQL 错误:ORA-00942 表或视图不存在

© www.soinside.com 2019 - 2024. All rights reserved.