用Oracle分页

用Oracle分页

我对甲骨文不太熟悉。我有大约250 K的记录,我想每页显示100张。目前,我有一个存储过程,它使用数据适配器将所有25万条记录检索到DataSet,还有DataSet和DataAdapter.Fill(DataSet)方法。如果我有“页面编号”和“每页记录数”作为整数值,我可以作为参数传递,那么返回该特定部分的最佳方法是什么。比方说,如果我从SELECT语句中传递10作为页码,120作为页数,它会给我1880到1200,或者诸如此类的东西,我脑子里的数学可能会消失。

我正在用C#在.NET中这样做,认为这并不重要,如果我能在SQL方面正确地实现它,那么我应该很酷。

更新:我能够使用Brian的建议,而且效果很好。我想进行一些优化,但是页面将在4到5秒内出现,而不是一分钟,而且我的分页控件能够很好地集成到我的新存储过程中。


弑天下
浏览 721回答 3
3回答

慕姐4208626

像这样的事情应该有效:来自Frans Bouma的博客SELECT&nbsp;*&nbsp;FROM( &nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;a.*,&nbsp;rownum&nbsp;r__&nbsp;&nbsp;&nbsp;&nbsp;FROM &nbsp;&nbsp;&nbsp;&nbsp;( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;*&nbsp;FROM&nbsp;ORDERS&nbsp;WHERE&nbsp;CustomerID&nbsp;LIKE&nbsp;'A%' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ORDER&nbsp;BY&nbsp;OrderDate&nbsp;DESC,&nbsp;ShippingDate&nbsp;DESC &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;a&nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;rownum&nbsp;<&nbsp;((pageNumber&nbsp;*&nbsp;pageSize)&nbsp;+&nbsp;1&nbsp;))WHERE&nbsp;r__&nbsp;>=&nbsp;(((pageNumber-1)&nbsp;*&nbsp;pageSize)&nbsp;+&nbsp;1)

湖上湖

关于分页和非常有用的解析函数。这是该页的摘录:select&nbsp;*&nbsp;from&nbsp;( &nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;/*+&nbsp;first_rows(25)&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;object_id,object_name, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;row_number()&nbsp;over &nbsp;&nbsp;&nbsp;&nbsp;(order&nbsp;by&nbsp;object_id)&nbsp;rn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from&nbsp;all_objects) &nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;rn&nbsp;between&nbsp;:n&nbsp;and&nbsp;:m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;order&nbsp;by&nbsp;rn;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Oracle