Using rownum *without* an order by will give you random results each time you run your query. To do a proper paging, you need to put this into a derived table together with an `order by` 

    select *
    from (
      select foo.*
      from foo
      order by some_column -- this is important!!
    ) t
    where rownum between 101 and 200;

For more details please read the explanation on `rownum` works in the manual http://docs.oracle.com/cd/E11882_01/server.112/e41084/pseudocolumns009.htm#SQLRF00255

For a very good discussion on how to do paging efficiently in Oracle (and other DBMS) I can highly recommend this site: http://use-the-index-luke.com/sql/partial-results/fetch-next-page