rownum est une pseudo-colonne qui compte les lignes dans le jeu de résultats après l'application de la clause where. Toutefois, cette requête renvoie toujours zéro ligne, quel que soit le nombre de lignes dans la table. Pour expliquer ce comportement, nous devons comprendre comment Oracle traite ROWNUM. Lors de l'affectation de ROWNUM à une ligne, Oracle commence à 1 et incrémente seulement la valeur lorsqu'une ligne est sélectionnée; c'est-à-dire lorsque toutes les conditions de la clause WHERE sont remplies. Étant donné que notre condition exige que ROWNUM est supérieur à 2, aucune ligne ne sont sélectionnés et ROWNUM est jamais incrémentée au-delà 1.
http://blog.lishman.com/2008/03/rownum.html
another stackoverflow link
Edité
ce paragraphe que je trouve sur oracle site Web qui est beaucoup mieux
Conditions de test pour les valeurs ROWNUM plus t han un entier positif est toujours faux. Par exemple, cette requête ne renvoie aucune ligne:
SELECT * FROM employees
WHERE ROWNUM > 1;
La première ligne récupérée est attribuée une ROWNUM de 1 et fait la fausse condition. La deuxième ligne à extraire est maintenant la première ligne et est également affectée d'un ROWNUM de 1 et rend la condition fausse. Toutes les lignes échouent par la suite à satisfaire la condition, donc aucune ligne n'est retournée.
Vous pouvez également utiliser ROWNUM pour affecter des valeurs propres à chaque ligne d'une table, comme dans cet exemple:
Fonctionne bien ici en utilisant Oracle 10g, notez bien que vous n'aurez aucun contrôle sur les 4 lignes qui sont retournées .... – OTTA
Attention: 'ROWNUM' n'est pas une pseudo-colonne pour votre table, c'est une pseudo-séquence pour un résultat ensemble. – Benoit
utiliser l'ordre par pour assurer la cohérence – tbone