Oracle SQL Developer添加行尾空注释后报ORA-00928错误求助
问题结论:这是Oracle SQL Developer的解析问题,与Oracle数据库无关
原因分析
这个问题的核心是SQL Developer 23.1.0.097对行尾空--注释的语句解析逻辑存在bug,而非Oracle 19c数据库本身的语法处理错误:
- 当你在带
UNION ALL的SELECT语句第一行末尾添加空的--注释时,SQL Developer在将语句发送给数据库前,错误地拆分了完整的SQL语句——它可能把SELECT col1 FROM table1 --当成了一个独立的执行单元,而后续的UNION ALL SELECT ...被当作了另一个缺少开头SELECT的语句,导致数据库返回ORA-00928错误。 - 而使用
/* */块注释时,SQL Developer能正确识别这是语句的一部分,不会拆分完整的UNION ALL语句,因此数据库能正常执行。
验证方式
你可以直接用SQL*Plus或其他数据库客户端执行带行尾空--注释的语句,会发现数据库能正常解析并运行,这就证明问题出在SQL Developer的语句处理逻辑上,和Oracle数据库无关。
临时解决方法
- 用
/* */块注释替代行尾的空--注释; - 避免在
UNION ALL前一行的末尾添加空的--注释。
内容的提问来源于stack exchange,提问作者LegacyGrinder
相关产品推荐
相关产品推荐

