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

撒科打諢
TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊
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)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊
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;
添加回答
舉報(bào)
0/150
提交
取消