rownum擬似列は、セレクトした結果に対して行番号がシーケンシャルにセットされる列です。
以下のようにどのテーブルにも存在します。
SELECT EMP_ID,ROWNUM
FROM EMPLOYEE
WHERE ROWNUM <= 5
結果は以下のようになります。
EMP_ID ROWNUM
------ ------
000001 1
000002 2
000003 3
000004 4
000005 5
このように自動的に行番号が振られますので、
WHERE ROWNUM <= 5 というように検索結果の行数を指定するのによく使用します。
では、以下のようにするとどうなるでしょうか。
SELECT EMP_ID,ROWNUM
FROM EMPLOYEE
WHERE ROWNUM <= 5
ROWNUM = <5とした時です。こうするとセレクトされた結果は常に偽となるため検索結果は0件となります。
ROWNUMが5のレコードが表示されそうな感じがしますが、実際はフェッチ時にROWNUMを割り当てるため、最初のレコードがフェッチされた時にROWNUM = 5は偽となるため、次の行フェッチ時にROWNUMに1を割り当てに行きます。
これがエンドレスに続き、結果0件となります。