rownum är en pseudokolumn som räknar rader i resultatuppsättningen efter where-satsen har tillämpats.
SELECT table_name
FROM user_tables
WHERE rownum > 2;
TABLE_NAME
------------------------------
0 rows selected
Den här frågan returnerar dock alltid noll rader, oavsett antalet rader i tabellen.
För att förklara detta beteende måste vi förstå hur Oracle bearbetar ROWNUM. När du tilldelar ROWNUM till en rad, börjar Oracle med 1 och ökar endast värdet när en rad väljs; det vill säga när alla villkor i WHERE-klausulen är uppfyllda. Eftersom vårt villkor kräver att ROWNUM är större än 2, väljs inga rader och ROWNUM ökas aldrig mer än 1.
http://blog.lishman.com/2008/03/rownum.html
Redigerad
det här stycket hittar jag på oracle webbplats som är mycket bättre
Villkor som testar för ROWNUM-värden större än ett positivt heltal är alltid falska. Till exempel returnerar den här frågan inga rader:
SELECT * FROM employees
WHERE ROWNUM > 1;
Den första raden som hämtas tilldelas ROWNUM 1 och gör villkoret falskt. Den andra raden som ska hämtas är nu den första raden och är också tilldelad ett ROWNUM på 1 och gör villkoret falskt. Alla rader uppfyller inte villkoret, så inga rader returneras.
Du kan också använda ROWNUM för att tilldela unika värden till varje rad i en tabell, som i det här exemplet: