rownum 詳解

chaobaojun發表於2013-04-07

ROWNUM是一個序列,是oracle資料庫從資料檔案或緩衝區中讀取資料的順序。它取得第一條記錄則rownum值為1,第二條為2,依次類推。
如果 你用>,>=,=,between…and這些條件,因為從緩衝區或資料檔案中得到的第一條記錄的rownum為1,則被刪除,接著取下 條,
可是它的rownum還是1,又被刪除,依次類推,便沒有了資料。
rownum 的原理

題目:
1.drop table t;
create table t as select rownum rn from dba_objects where rownum <= 100;
2. select * from t where rownum =1 ;
select * from t where rownum >=1 ;
select * from t where rownum >=5 ;
select * from t where rownum =5 ;
select * from t where rownum <=5 ;
rownum是在執行期間生成的資料,沒有1,怎麼可能有2
rownum在oralce內編寫方式
select * from t where rownum =1 ;
begin
rownum = 1 
For x in ( select * from t )   --rownum=1,可以進入迴圈
Loop 
  if ( rownum = 1 ) 
  then 
     output date 
     rownum = rownum+1 
  end if; 
End loop;
end;
select * from t where rownum >=5 ;  ----因為rownum=1.所以直接退出迴圈,沒有輸出
rownum = 1 
For x in ( select * from t ) 
Loop 
  if ( rownum >= 5 ) 
  then 
     output date 
     rownum = rownum+1 
  end if; 
End loop;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21861353/viewspace-757908/,如需轉載,請註明出處,否則將追究法律責任。

相關文章