导致ORA-00907的JPQL查询:缺少右括号。怎么修?

时间:2015-05-05 00:32:43

标签: oracle jpql

我正在尝试使用Oracle 10运行以下查询:

select intel from Intel intel where intel in (select intel from Intel intel where intel.city.name = 'Rome' order by intel.city.name asc)

但是,我得到" ORA-00907:错过右括号"。显然,这不是因为缺少正确的parens。我知道这个错误有时是由一个错误引起的(http://www.dba-oracle.com/sf_ora_00907_missing_right_parenthesis.htm),但我的Oracle版本是在修补了错误之后。

关于我可能做错什么的任何想法?

谢谢!

编辑:我知道查询是多余的,但我特别需要测试我在运行时动态修改子查询的功能,上面的内容只是为了以最简单的方式测试此功能可能,即使它没有增加表现力。

1 个答案:

答案 0 :(得分:1)

Oracle解析器会针对任何数量的语法错误产生此特定错误 - 它并不意味着您缺少正确的括号,但它并不是解析器所期望的。

在这种情况下,错误是由于子查询中的ORDER BY。在ORDER BY子查询中有一个IN子句是没有意义的,并且解析器不允许它。

如果您的目的是对结果进行排序,那么您希望子查询之外的ORDER BY

select intel from Intel intel where intel in (select intel from Intel intel where intel.city.name = 'Rome') order by intel.city.name asc

但根据您的评论说明目的,您需要使用不同的查询表单来完成测试。