I think what Dave is getting at is, what's your definition of "first 100 rows"? First in what sense? Ordered by some column value? Any 100 rows? If you want any 100 rows, then the query provided will work.
If however, you wanted, let's say, the top 100 employees with the highest salaries, then if you were to do:
select * from emp where rownum < 101;
that doesn't say anything about order by salary.
If you were to do:
select * from emp where rownum < 101 order by salary;
You wouldn't get an error, the above is syntactically correct, but, again, you wouldn't get what you expect.
Now, if you did:
select * from (select * from emp order by salary) where rownum <101;
Then you'd get the result you expected.
So, again, what do you mean by "the first 100 rows"?
Hope that helps,