Hello Andrew,

> Is there a way to find out how many records were returned 
> with a DBI query? There's the 
> obvious counting each record as you fetch it, but I need the 
> count before I start going 
> through them.

I was looking through the DBI documentation (perldoc DBI) not long ago and
this caught my eye... It's in the "Statement Handle Methods" section. Just
proof that sometimes the info is there, but it's hard to find or buried in a
very big man page (which certainly is the case for the DBI man page...).

<-------------------- snip -------------------->
rows

  $rv = $sth->rows;

    Returns the number of rows affected by the last row affecting command,
or -1 if the number of rows is not known or not available.

    Generally, you can only rely on a row count after a non-SELECT execute
(for some specific operations like UPDATE and DELETE), or after fetching all
the rows of a SELECT statement.

    For SELECT statements, it is generally not possible to know how many
rows will be returned except by fetching them all. Some drivers will return
the number of rows the application has fetched so far, but others may return
-1 until all rows have been fetched. So use of the rows method or $DBI::rows
with SELECT statements is not recommended.

    One alternative method to get a row count for a SELECT is to execute a
``SELECT COUNT(*) FROM ...'' SQL statement with the same ``...'' as your
query and then fetch the row count from that.
<-------------------- snip -------------------->

So that should answer your question. In short, no it isn't possible unless
you use a "SELECT COUNT(*) FROM ..." query before issuing your query itself.

Hope this helps,

J-S

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to