Re: oracle (oci8) intro
| From: | Graeme Merrall | Date: | Sun, 19 Aug 2001 23:34:05 +0000 |
| Subject: | Re: oracle (oci8) intro | ||
| References: | 1 | Groups: | php.db |
| Request: | Send a blank email to php-db+get-11532@lists.php.net to get a copy of this message | ||
Quoting Cynic <cynic@mail.cz>:
> Hi there,
>
> I'm in a situation where I need to produce a small app
> on top of an Oracle server really quickly. I'm quite a
> seasoned developer, but have only experience with MySQL
> so far. It's my understanding that Oracle lacks the
> MySQL's "LIMIT" feature. Looking at the OCI section of
> the PHP manual, it also looks like there's no
> OCIDataSeek() or some equivalent. Since the app I need
> to build will be a standard report builder with paging,
> I need this functionality. What is the common way to
> achieve this? Always fetch all rows, cycling through the
> resultset, discarding the records that preceed the one
> I want to start displaying with, and quit when I reach
> the one where the page should end?
>
> Is there a PHP + OCI tutorial somewhere?
>
> I need an intro to Oracle, and I need it now. :(
Thies has an Oracle/PHP tutorial online at http://conf.php.net/
which may be of
some assitance.
The LIMIT problem is a real bitch is Oracle. There are a few ways to get around
it, the most obvious people use being ROWNUM. However, ROWNUM does not listen
to sorting which makes life amusing.
One option is to try a query like the following:
"SELECT * FROM (SELECT field1, field2 FROM table WHERE id>10 ORDER BY field1
DESC) WHERE ROWNUM<11"
which gives you 10 rows, but still leaves the question of paging behind unless
you use between values. I can't say I've tried paging record sets though.
Cheers,
Graeme