Lo stile di codifica e le parentesi nidificate non necessarie lo rendono davvero difficile da leggere e interpretare. Ma aiuta anche il fatto che, contrariamente ad alcuni commenti, un ORA-00907 non significa sempre un numero dispari di parentesi, può indicare un errore di sintassi più generale che ha causato il salvataggio del parser. In questo caso non è molto utile.
Il problema è il order by
clausola sulla penultima riga, all'interno della sottoquery che stai confrontando con in
:
...
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
L'ordinamento finale è ovviamente consentito, ma in quella subquery non lo è. Quindi dovrebbe finire:
...
TEST.TS_TYPE = 'LR-SCENARIO')AND TEST.TS_TEST_ID =145965)
ORDER BY TESTCYCL.TC_TESTCYCL_ID,STEP.ST_STEP_ORDER
Non posso testarlo perché non ho il tuo schema, ma una demo più semplice potrebbe aiutare a dimostrare:
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"
Rimozione dell'order by
interno :
select d1.dummy
from dual d1
where d1.dummy in (
select dummy
from dual d2
)
order by d1.dummy;
DUMMY
-----
X
Si aspetta di vedere un )
invece di order by
, quindi l'errore ha un senso, una volta che sai cosa non va; ma non ti aiuta davvero a restringere il campo.
Per inciso, questo è indicato nel documento di supporto Oracle 731577.1:
Ottenere ORA-00907: missing right parenthesis
quando si utilizza un ORDER BY
clausola in una sottoquery. Quando il ORDER BY
la clausola viene rimossa la query viene eseguita senza errori.
...
Questo è un comportamento previsto per Bug 4944718ORDER BY
in una sottoquery non dovrebbe funzionare, poiché l'ordine delle righe viene passato alla query esterna e non ha alcun impatto.
È consentito/ignorato in una vista in linea, ma non in una sottoquery nidificata. (Anche se potrebbero esserci delle eccezioni in cui non genera ancora un errore...)