(ни в коем случае не эксперт Oracle)
Насколько я понимаю, rownum нумерует строки в наборе результатов .
Итак, в вашем примере:
select * from table1 where rownum=2
Сколько строк будет в наборе результатов?Следовательно, какой rownum будет назначен на такой ряд?Теперь вы понимаете, почему результат на самом деле не возвращается?
В общем, вам следует избегать использования rownum или любых функций, которые подразумевают порядок результатов.Попробуйте подумать о работе со всем набором результатов.
С учетом сказанного, я считаю, что будет работать следующее:
select * from (select rownum as rn,table1.* from table1) as t where t.rn = 2
Поскольку в этом случае вы нумеруете строкив подзапросе.