rownum è una pseudo colonna che conta le righe nel set di risultati dopo l'applicazione della clausola where.
SELECT table_name
FROM user_tables
WHERE rownum > 2;
TABLE_NAME
------------------------------
0 rows selected
Tuttavia, questa query restituirà sempre zero righe, indipendentemente dal numero di righe nella tabella.
Per spiegare questo comportamento, dobbiamo capire come Oracle elabora ROWNUM. Quando si assegna ROWNUM a una riga, Oracle inizia da 1 e incrementa il valore solo quando viene selezionata una riga; cioè, quando tutte le condizioni nella clausola WHERE sono soddisfatte. Poiché la nostra condizione richiede che ROWNUM sia maggiore di 2, non viene selezionata alcuna riga e ROWNUM non viene mai incrementato oltre 1.
http://blog.lishman.com/2008/03/rownum.html
Modificato
questo paragrafo lo trovo su oracle sito web che è molto meglio
Il test delle condizioni per i valori ROWNUM maggiori di un intero positivo sono sempre false. Ad esempio, questa query non restituisce righe:
SELECT * FROM employees
WHERE ROWNUM > 1;
Alla prima riga recuperata viene assegnato un ROWNUM di 1 e rende la condizione falsa. La seconda riga da recuperare è ora la prima riga e viene anche assegnata un ROWNUM di 1 e rende la condizione falsa. Tutte le righe successivamente non soddisfano la condizione, quindi non vengono restituite righe.
Puoi anche utilizzare ROWNUM per assegnare valori univoci a ciascuna riga di una tabella, come in questo esempio: