Ein möglicher Workaround wäre, dein Statement zu splitten:
SELECT * FROM (dein SELECT incl. Pseudospalte ROWNUM)
where rownum ;
Das wird so allerdings nicht viel nützen, da eine Bedingung á la ROWNUM > xy immer falsch ist, wenn xy >= 1
Die erste Zeile die gelesen würde bekommt die 1 -> Bedingung nicht erfüllt. Die nächste gelesene Zeile würde dann die 1 bekommen -> Bedingung nicht erfüllt usw.
Ein Hilfskonstrukt wäre eine temporäre Tabelle oder ein materialized view, der eine „echte“ Spalte mit der Zeilennummer enthält:
create materialized view v_table as select table.*, rownum rownum2 from table;
select * from v_table where rownum2 between 1 and 10;
select * from v_table where rownum2 between 11 and 20;
…
MfG
Stephan