2007年5月23日 星期三
昨天,昨天晚上回去不想寫日志就沒上來,一天半,基本上把junzhuan的四個頁面的功能弄出來了,這都是自己寫的,比hezhi改別人的東西順唐多了,哈哈
研究了一下oracle的分頁,早就聽說oracle可以支持分頁的查詢,而sqlserver好像就沒有這種功能,但一直也不知道oracle是怎么分頁的,這次的做的這個功能有機會看到老系統人家是怎么實現了,研究了研究終于明白了
原來oracle每個表都有一個偽字段rownum,所謂偽字段,我的理解就是不是用戶建的,也不用用戶維護,還有個偽字段rowid。
rownum是oracle在查詢結果集的時候為每個記錄順序分配的,這樣我們可以利用他來實現分頁
但不能這樣寫select * from table where rownum > 1 and rownum < 5
因為已rownum做條件只能>0或者>負數
因為oracle在比較的時候,第一條記錄rownum=1,1>1不成立,丟棄,下一條記錄rownum=1,1>1不成立,以此類推,沒有符合條件的記錄
利用子查詢實現分頁
select * from (select rownum r,td.* from (select * from table) td) where r > 10 and r < 20
在這里rownum變成了一個結果集中的字段,根普通字段沒什么兩樣,這樣我們只要傳入起至記錄就可以分頁啦,哈哈
呵呵,原來oracle分頁是這么搞的,剛知道,嘿嘿,學習啦。
研究了一下oracle的分頁,早就聽說oracle可以支持分頁的查詢,而sqlserver好像就沒有這種功能,但一直也不知道oracle是怎么分頁的,這次的做的這個功能有機會看到老系統人家是怎么實現了,研究了研究終于明白了
原來oracle每個表都有一個偽字段rownum,所謂偽字段,我的理解就是不是用戶建的,也不用用戶維護,還有個偽字段rowid。
rownum是oracle在查詢結果集的時候為每個記錄順序分配的,這樣我們可以利用他來實現分頁
但不能這樣寫select * from table where rownum > 1 and rownum < 5
因為已rownum做條件只能>0或者>負數
因為oracle在比較的時候,第一條記錄rownum=1,1>1不成立,丟棄,下一條記錄rownum=1,1>1不成立,以此類推,沒有符合條件的記錄
利用子查詢實現分頁
select * from (select rownum r,td.* from (select * from table) td) where r > 10 and r < 20
在這里rownum變成了一個結果集中的字段,根普通字段沒什么兩樣,這樣我們只要傳入起至記錄就可以分頁啦,哈哈
呵呵,原來oracle分頁是這么搞的,剛知道,嘿嘿,學習啦。