rownum je pseudosloupec, který počítá řádky v sadě výsledků po použití klauzule where.
SELECT table_name
FROM user_tables
WHERE rownum > 2;
TABLE_NAME
------------------------------
0 rows selected
Tento dotaz však vždy vrátí nula řádků, bez ohledu na počet řádků v tabulce.
Abychom toto chování vysvětlili, musíme pochopit, jak Oracle zpracovává ROWNUM. Při přiřazování ROWNUM k řádku začíná Oracle na 1 a zvyšuje hodnotu pouze při výběru řádku; to znamená, když jsou splněny všechny podmínky v klauzuli WHERE. Protože naše podmínka vyžaduje, aby ROWNUM bylo větší než 2, nejsou vybrány žádné řádky a ROWNUM se nikdy nezvyšuje nad 1.
http://blog.lishman.com/2008/03/rownum.html
Upraveno
tento odstavec jsem našel na oracle web, který je mnohem lepší
Podmínky testování pro hodnoty ROWNUM větší než kladné celé číslo jsou vždy nepravdivé. Tento dotaz například nevrací žádné řádky:
SELECT * FROM employees
WHERE ROWNUM > 1;
Prvnímu načtenému řádku je přiřazeno ROWNUM 1 a podmínka je nepravdivá. Druhý řádek, který má být načten, je nyní prvním řádkem a je mu také přiřazeno ROWNUM 1 a podmínka je nepravdivá. Všechny řádky následně nesplní podmínku, takže nejsou vráceny žádné řádky.
Můžete také použít ROWNUM k přiřazení jedinečných hodnot každému řádku tabulky, jako v tomto příkladu: