JPQL 查询导致 ORA-00907:缺少右括号。怎么修?
JPQL query causing ORA-00907: missing right parenthesis. How to fix?
我正在尝试 运行 以下查询,使用 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: missing right parenthesis"。显然,这不是因为缺少右括号。我知道这个错误有时是由一个bug引起的(http://www.dba-oracle.com/sf_ora_00907_missing_right_parenthesis.htm),但是我的Oracle版本是在修复了这个bug之后。
关于我可能做错了什么的想法?
谢谢!
编辑:我知道这个查询是多余的,但是我特别需要测试一个我在运行时间动态修改子查询的功能,上面是编写只是为了以最简单的方式测试此功能,即使它不会增加表现力。
Oracle 解析器会针对任意数量的语法错误产生此特定错误 - 这并不真正意味着您缺少正确的括号,而是它不是解析器期望的位置。
在这种情况下,错误是因为子查询中的ORDER BY
。在 IN
子查询中使用 ORDER BY
子句是没有意义的,解析器不允许。
如果您的目的是对结果进行排序,那么您希望 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
但是根据您解释目的的评论,您需要使用不同的查询表单来完成您的测试。
我正在尝试 运行 以下查询,使用 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: missing right parenthesis"。显然,这不是因为缺少右括号。我知道这个错误有时是由一个bug引起的(http://www.dba-oracle.com/sf_ora_00907_missing_right_parenthesis.htm),但是我的Oracle版本是在修复了这个bug之后。
关于我可能做错了什么的想法?
谢谢!
编辑:我知道这个查询是多余的,但是我特别需要测试一个我在运行时间动态修改子查询的功能,上面是编写只是为了以最简单的方式测试此功能,即使它不会增加表现力。
Oracle 解析器会针对任意数量的语法错误产生此特定错误 - 这并不真正意味着您缺少正确的括号,而是它不是解析器期望的位置。
在这种情况下,错误是因为子查询中的ORDER BY
。在 IN
子查询中使用 ORDER BY
子句是没有意义的,解析器不允许。
如果您的目的是对结果进行排序,那么您希望 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
但是根据您解释目的的评论,您需要使用不同的查询表单来完成您的测试。