O Oracle atribui valores a ROWNUM sequencialmente à medida que as linhas são produzidas pela consulta - assim, a primeira linha buscada obtém ROWNUM=1, a segunda linha buscada obtém ROWNUM=2, a terceira linha buscada obtém ROWNUM=3, etc. Aviso - para uma linha para ser atribuído ROWNUM=3 duas linhas anteriores DEVEM ser buscadas. E é por isso que sua consulta não retorna nenhuma linha. Você está solicitando ao banco de dados a terceira linha buscada - mas as linhas 1 e 2 nunca foram buscadas.
Para demonstrar, tente executar as seguintes 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 contornar seu problema, tente o seguinte:
SELECT ROW_NUMBER FROM
(SELECT ROWNUM AS ROW_NUMBER, S.* FROM SALARY S)
WHERE ROW_NUMBER = 3;
Compartilhe e curta.