Oracle asigna valores a ROWNUM secuencialmente a medida que la consulta produce filas; por lo tanto, la primera fila obtenida obtiene ROWNUM=1, la segunda fila obtenida obtiene ROWNUM=2, la tercera fila obtenida obtiene ROWNUM=3, etc. Aviso:para una fila para que se le asigne ROWNUM=3, DEBEN obtenerse dos filas anteriores. Y es por eso que su consulta no devuelve filas. Le está solicitando a la base de datos la tercera fila recuperada, pero las filas 1 y 2 nunca se han recuperado.
Para demostrarlo, intente ejecutar las siguientes consultas:
SELECT S.* FROM SALARY S; -- Should return all rows
SELECT ROWNUM, S.* FROM SALARY S; -- Should return all rows with ROWNUM prepended
SELECT ROWNUM, S.* FROM SALARY WHERE ROWNUM=3; -- Should return no rows
Para solucionar su problema, intente lo siguiente:
SELECT ROW_NUMBER FROM
(SELECT ROWNUM AS ROW_NUMBER, S.* FROM SALARY S)
WHERE ROW_NUMBER = 3;
Comparte y disfruta.