用PHP处理Oracle的分页问题
Web Tips 2006/03/19 21:15 以前玩的都是MySQL数据库,简单方便。对分页的问题处理很简单,一个limit语句即可轻松搞定。今天在弄Oracle的时候才知道这Limit是MySQL特有的,Oracle里面还真没有呢。找了半天资料,发现了一个这样的实现方法,不过方法上也写了,对于大量数据的数据库来说,性能会很糟糕。
[CODE] SELECT * FROM ( SELECT A.*, rownum r FROM ( SELECT * FROM Articles ORDER BY PubTime DESC ) A WHERE rownum <= PageUpperBound ) B WHERE r > PageLowerBound; [/CODE]
PEAR的db类中,存在一个方法也可以实现:DB_common::limitQuery()。通过这个方法可以使用很通用的SQL语句,达到相同的目的,这样给提供多种数据库支持的程序带来了很大的方便。另外通过PEAR的另一个类Pager,更能很轻松的实现分页的显示,相关的文档请参考这个:
http://pear.php.net/manual/en/package.database.db.db-common.limitquery.php
http://pear.php.net/manual/en/package.html.pager.intro.php
[CODE] SELECT * FROM ( SELECT A.*, rownum r FROM ( SELECT * FROM Articles ORDER BY PubTime DESC ) A WHERE rownum <= PageUpperBound ) B WHERE r > PageLowerBound; [/CODE]
PEAR的db类中,存在一个方法也可以实现:DB_common::limitQuery()。通过这个方法可以使用很通用的SQL语句,达到相同的目的,这样给提供多种数据库支持的程序带来了很大的方便。另外通过PEAR的另一个类Pager,更能很轻松的实现分页的显示,相关的文档请参考这个:
http://pear.php.net/manual/en/package.database.db.db-common.limitquery.php
http://pear.php.net/manual/en/package.html.pager.intro.php

