rownum is een pseudo-kolom die rijen telt in de resultaatset nadat de waar-clausule is toegepast.
SELECT table_name
FROM user_tables
WHERE rownum > 2;
TABLE_NAME
------------------------------
0 rows selected
Deze query retourneert echter altijd nul rijen, ongeacht het aantal rijen in de tabel.
Om dit gedrag te verklaren, moeten we begrijpen hoe Oracle ROWNUM verwerkt. Bij het toewijzen van ROWNUM aan een rij, begint Oracle bij 1 en verhoogt alleen de waarde wanneer een rij is geselecteerd; dat wil zeggen, wanneer aan alle voorwaarden in de WHERE-clausule is voldaan. Aangezien onze voorwaarde vereist dat ROWNUM groter is dan 2, worden er geen rijen geselecteerd en wordt ROWNUM nooit hoger dan 1.
http://blog.lishman.com/2008/03/rownum.html
Bewerkt
deze paragraaf vind ik op oracle website die veel beter is
Testvoorwaarden voor ROWNUM-waarden groter dan een positief geheel getal zijn altijd onwaar. Deze zoekopdracht retourneert bijvoorbeeld geen rijen:
SELECT * FROM employees
WHERE ROWNUM > 1;
De eerste opgehaalde rij krijgt een ROWNUM van 1 en maakt de voorwaarde onwaar. De tweede rij die moet worden opgehaald, is nu de eerste rij en krijgt ook een ROWNUM van 1 en maakt de voorwaarde onwaar. Alle rijen voldoen vervolgens niet aan de voorwaarde, dus er worden geen rijen geretourneerd.
U kunt ROWNUM ook gebruiken om unieke waarden toe te wijzen aan elke rij van een tabel, zoals in dit voorbeeld: