コーディングスタイルと不要なネストされた角かっこは、これを読み、解釈するのを非常に難しくします。ただし、一部のコメントとは異なり、ORA-00907は必ずしも括弧の数が不均一であることを意味するわけではなく、パーサーがベイルアウトする原因となったより一般的な構文エラーを示している可能性もあります。この場合、あまり役に立ちません。
問題はorder by
in
と比較しているサブクエリ内の最後から2番目の行の句 :
...
AND RUN.RN_RUN_ID in(Select max(RUN.RN_RUN_ID) From (((((((RELEASES JOIN RELEASE_CYCLES
...
TEST.TS_TYPE = 'LR-SCENARIO')AND TEST.TS_TEST_ID =145965
ORDER BY TESTCYCL.TC_TESTCYCL_ID)
ORDER BY TESTCYCL.TC_TESTCYCL_ID,STEP.ST_STEP_ORDER
最終的な順序付けは明らかに許可されていますが、そのサブクエリでは許可されていません。したがって、終了する必要があります:
...
TEST.TS_TYPE = 'LR-SCENARIO')AND TEST.TS_TEST_ID =145965)
ORDER BY TESTCYCL.TC_TESTCYCL_ID,STEP.ST_STEP_ORDER
私はあなたのスキーマを持っていないのでそれをテストすることはできませんが、より簡単なデモがデモンストレーションに役立つかもしれません:
select d1.dummy
from dual d1
where d1.dummy in (
select dummy
from dual d2
order by d2.dummy
)
order by d1.dummy;
Error at Command Line : 6 Column : 3
Error report -
SQL Error: ORA-00907: missing right parenthesis
00907. 00000 - "missing right parenthesis"
内側のorder by
を削除する :
select d1.dummy
from dual d1
where d1.dummy in (
select dummy
from dual d2
)
order by d1.dummy;
DUMMY
-----
X
)
が表示されることを期待しています そのorder by
の代わりに 、したがって、エラーが何が間違っているかがわかれば、エラーはある程度意味があります。しかし、それは実際にはそれを絞り込むのに役立ちません。
ちなみに、これはOracleサポートドキュメント731577.1で参照されています:
ORA-00907: missing right parenthesis
ORDER BY
を使用する場合 サブクエリの句。ORDER BY
の場合 句が削除され、クエリはエラーなしで実行されます。...
これは、バグ4944718ORDER BY
で予想される動作です。 行の順序は外部クエリに渡され、影響がないため、サブクエリでは機能しないはずです。
インラインビューでは許可/無視されますが、ネストされたサブクエリでは許可されません。 (それでもエラーがスローされない例外があるかもしれませんが...)