如何用Oracle进行分页?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (27)

我不像我希望的那样熟悉Oracle。我有大约25万条记录,我想每页显示100条记录。目前,我有一个存储过程,它使用数据适配器,数据集和dataadapter.Fill(dataset)方法从存储过程的结果中检索所有25万记录到数据集。如果我将“页码”和“每页记录数”作为整数值,我可以将其作为参数传递,那么返回该特定部分的最佳方法是什么?比如说,如果我从选择声明中通过10作为页码和120页作为页数,它会给我1880年至1200年,或者类似的话,我的脑中的数学可能就会失效。

我用C#在.NET中这样做,认为这并不重要,如果我可以在SQL方面做到这一点,那么我应该很酷。

提问于
用户回答回答于

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)
用户回答回答于

这是该页的摘录:

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;

扫码关注云+社区