用Oracle分頁我對甲骨文不太熟悉。我有大約250 K的記錄,我想每頁顯示100張。目前,我有一個存儲過程,它使用數(shù)據(jù)適配器將所有25萬條記錄檢索到DataSet,還有DataSet和DataAdapter.Fill(DataSet)方法。如果我有“頁面編號”和“每頁記錄數(shù)”作為整數(shù)值,我可以作為參數(shù)傳遞,那么返回該特定部分的最佳方法是什么。比方說,如果我從SELECT語句中傳遞10作為頁碼,120作為頁數(shù),它會給我1880到1200,或者諸如此類的東西,我腦子里的數(shù)學(xué)可能會消失。我正在用C#在.NET中這樣做,認(rèn)為這并不重要,如果我能在SQL方面正確地實(shí)現(xiàn)它,那么我應(yīng)該很酷。更新:我能夠使用Brian的建議,而且效果很好。我想進(jìn)行一些優(yōu)化,但是頁面將在4到5秒內(nèi)出現(xiàn),而不是一分鐘,而且我的分頁控件能夠很好地集成到我的新存儲過程中。
3 回答

慕姐4208626
TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個贊
SELECT * FROM( SELECT a.*, rownum r__ FROM ( SELECT * FROM ORDERS WHERE CustomerID LIKE 'A%' ORDER BY OrderDate DESC, ShippingDate DESC ) a WHERE rownum < ((pageNumber * pageSize) + 1 ))WHERE r__ >= (((pageNumber-1) * pageSize) + 1)

湖上湖
TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個贊
select * from ( select /*+ first_rows(25) */ object_id,object_name, row_number() over (order by object_id) rn from all_objects) where rn between :n and :m order by rn;
- 3 回答
- 0 關(guān)注
- 812 瀏覽
添加回答
舉報
0/150
提交
取消