I am using DBD::mysql and I can get the number of rows by assigning the result of the execute to a scalar:

my $rows = $sth->execute or die "Couldn't execute statement: " . DBI->errstr;

maybe this doesn't work with DBD::Oracle?

Rob

[EMAIL PROTECTED] wrote:
#Here's an example which shows what I am trying to accomplish.  If I 
can determine the number of rows before pushing the data, this can 
simply things for #me when processing the data throught my scripts.  
#
use warnings;
use strict;
use DBI;
use DBD::Oracle;

my $sql=q{  select name, location
            from mytable
};

my $dbh;

eval {
        $dbh = DBI->connect("dbi:Oracle:MYDB",
                                'dbuser', 'dbpass',
              {
                   RaiseError => 1,
                   AutoCommit => 0,
                   ora_session_mode => 0
              }
        );
};

if ( $@ ) {
        outprint('end',"$DBI::errstr\n");
}

my $sth=$dbh->prepare($sql) or die "Couldn't prepare statement: " . DBI-
  
errstr;
    

$sth->execute or die "Couldn't execute statement: " . DBI->errstr;

my $ary;

while ($ary = $sth->fetchrow_array()) {
                #I need to determine number of rows as this will affect 
whether a matrix is used or not
                #a boolean variable $matrix could be returned or a ref 
check done so that the data 
                #processing code can act accordingly
                #$sth->rows only shows total rows after the while loop 
is processed
                #Can I accomplish this without a seperate count(*) 
statement?
                #
                #push @newary,[ @{$ary} ]; # if more than one row
                #or
                #push @newary, @{$ary} ; # single row
}

$sth->finish;

$dbh->disconnect;
#
#ActivePerl 5.8.7 813
#ppm
#-DBD-Oracle 1.16
#-DBI 1.48


  
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.362 / Virus Database: 267.13.3/173 - Release Date: 11/16/2005

Reply via email to