为了账号安全,请及时绑定邮箱和手机立即绑定

用Oracle分页

用Oracle分页

弑天下 2019-08-03 07:03:37
用Oracle分页我对甲骨文不太熟悉。我有大约250 K的记录,我想每页显示100张。目前,我有一个存储过程,它使用数据适配器将所有25万条记录检索到DataSet,还有DataSet和DataAdapter.Fill(DataSet)方法。如果我有“页面编号”和“每页记录数”作为整数值,我可以作为参数传递,那么返回该特定部分的最佳方法是什么。比方说,如果我从SELECT语句中传递10作为页码,120作为页数,它会给我1880到1200,或者诸如此类的东西,我脑子里的数学可能会消失。我正在用C#在.NET中这样做,认为这并不重要,如果我能在SQL方面正确地实现它,那么我应该很酷。更新:我能够使用Brian的建议,而且效果很好。我想进行一些优化,但是页面将在4到5秒内出现,而不是一分钟,而且我的分页控件能够很好地集成到我的新存储过程中。
查看完整描述

3 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

像这样的事情应该有效:来自Frans Bouma的博客

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)



查看完整回答
反对 回复 2019-08-04
?
湖上湖

TA贡献2003条经验 获得超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;



查看完整回答
反对 回复 2019-08-04
  • 3 回答
  • 0 关注
  • 716 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信