Thread: howto determine rows count to be returned by DECLARE ... SELECT ...

howto determine rows count to be returned by DECLARE ... SELECT ...

From
Konstantin Izmailov
Date:
Dear Community,
I'm working on implementation of virtual grid using DECLARE... SELECT.... Advantage of virtual grid is that it loads only rows that a user is willing to see (with FETCH).
 
However, it is not clear how to determine max rows count that the cursor can return. The count is necessary for two purposes: render scrollbar and support jumping to the last rows in the grid.
 
The only obvious solution is to execute SELECT COUNT(1) ... before declaring the cursor.
 
Is there a better solution?
 
Can the cursor return total rows count or is there a way to position cursor to the last row? (Then the number of roundtrips to server can be less by 1 and virtual grid can render last rows in reverse order).
 
Thank you,
K.

Re: howto determine rows count to be returned by DECLARE ... SELECT ...

From
Richard Huxton
Date:
Konstantin Izmailov wrote:
> Dear Community,
> I'm working on implementation of virtual grid using DECLARE... SELECT....
> Advantage of virtual grid is that it loads only rows that a user is willing
> to see (with FETCH).
>
> However, it is not clear how to determine max rows count that the cursor can
> return. The count is necessary for two purposes: render scrollbar and
> support jumping to the last rows in the grid.
>
> The only obvious solution is to execute SELECT COUNT(1) ... before declaring
> the cursor.
>
> Is there a better solution?

Not really. The whole point of the server is that it doesn't fetch all
the rows, and until you've fetched them all you don't know how many
there are.

> Can the cursor return total rows count or is there a way to position cursor
> to the last row? (Then the number of roundtrips to server can be less by 1
> and virtual grid can render last rows in reverse order).

See the manuals for details on FETCH.

--
   Richard Huxton
   Archonet Ltd

Re: howto determine rows count to be returned by DECLARE ... SELECT ...

From
Dimitri Fontaine
Date:
Konstantin Izmailov <pgfizm@gmail.com> writes:

> However, it is not clear how to determine max rows count that the
> cursor can return. The count is necessary for two purposes: render
> scrollbar and support jumping to the last rows in the grid.

You can MOVE LAST, it'll tell you how many rows are in there, then MOVE
FIRST or wherever then FETCH 10 or your page size in rows.

Regards,
--
dim