$sth->rows, doesn't return the correct number of rows return

------_=_NextPart_001_01C5518A.365E711F
Content-Type: text/plain

Hi Guys,
 
When i do select quiery and then try to get count of rows like this in perl
script from Oracle database and Informix:
 
$rowCnt = $sth->rows;
 
above line is being executed after the $sth->execute;
 
This problem I am facing in Informix and Oracle both.
 
Any suggestions or solution would be great help.
 
 
Thanks
Ravish


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


------_=_NextPart_001_01C5518A.365E711F--
0
rakumar
5/5/2005 3:48:31 PM
perl.dbi.users 11100 articles. 1 followers. Follow

2 Replies
853 Views

Similar Articles

[PageSpeed] 32

Rabish Kumar wrote:

> When i do select quiery and then try to get count of rows like this in perl
> script from Oracle database and Informix:
>  
> $rowCnt = $sth->rows;
>  
> above line is being executed after the $sth->execute;

But before you've fetched the rows, presumably.  Have you read 
the DBI documentation on ->rows()?

http://search.cpan.org/~timb/DBI-1.48/DBI.pm#rows

-- 
Keith Ivey <keith@smokefreedc.org>
Smokefree DC
http://www.smokefreedc.org
Washington, DC
0
keith
5/5/2005 7:48:29 PM
On 5/5/05, Rabish Kumar <rakumar@lastminute.com> wrote:
> Hi Guys,
>=20
> When i do select quiery and then try to get count of rows like this in pe=
rl
> script from Oracle database and Informix:
>=20
> $rowCnt =3D $sth->rows;
>=20
> above line is being executed after the $sth->execute;
>=20
> This problem I am facing in Informix and Oracle both.
>=20
> Any suggestions or solution would be great help.
>=20
You are not very specific with respect to when you are trying to get
the count of rows.  However, from the doc, for SELECT queries the
returned value is only valid after all rows have been retrieved.:

rows
  $rv =3D $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.

CU,
Lou
0
llosee
5/5/2005 7:56:15 PM
Reply: