Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re^3: Counting number of rows while working with Oracle

by ikegami (Patriarch)
on Mar 18, 2008 at 08:16 UTC ( [id://674741]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Counting number of rows while working with Oracle
in thread Counting number of rows while working with Oracle

Oh, I missed that bit about returning at most one row! He can simply use

my $row = $dbh->selectrow_arrayref($stmt_or_sth);

or

my $row = $sth->fetch_arrayref(); $sth->finish();

defined($row) will tell him if a row was returned. If the row only contains one field and it can't be NULL, then he could even use

my ($value) = $sth->fetch_array(); $sth->finish();

defined($value) will tell him if a value was returned (again, assuming the value can't be NULL).

Replies are listed 'Best First'.
Re^4: Counting number of rows while working with Oracle
by denzil_cactus (Sexton) on Mar 18, 2008 at 12:12 UTC
    Please tell me what happens if the query return more than one row. would $sth->fetchall_arrayref(); work?
      Please read the manual and tell us which part you don't understand.
      --
      Andreas
        Andreas

        I have gone through the code and then only I started the things. Please follow the first thread I have posted

      • Counting number of rows while working with Oracle
      • the problem is I have to count the number of rows when I execute the query(Oracle) as we can do in perl with mysql $num = mysql_num_rows($result); after counting the rows I have to write the main logic and then I have to fetch all the rows. Hope you can understand my issue

        Thanks

Re^4: Counting number of rows while working with Oracle
by denzil_cactus (Sexton) on Mar 18, 2008 at 11:02 UTC
    Thanks for the replies I have tried the following code
    my $rows = $sthBoo->fetchall_arrayref(); my $num_rows = @$rows;
    it worked I could see the number of rows but now if I use
    while (my $row = $sth->fetchrow_hashref) {
    after the above code its giving the warning
    DBD::Oracle::st fetchrow_hashref failed: no statement executing (perha +ps you need to call execute first) [for Statement "
    Is there any problem withthe code? Thanks
      That's why I followed those two lines with foreach my $row (@$rows) instead of while (my $row = $sth->fetchrow_hashref).
      You did not post a complete, working code sample, so we can't say.

      Inspect your $sth vs. $sthBoo though.

      --
      Andreas
        Here my code
        my $req = <STDIN>; my $sth = $dbh->prepare( qq{ SELECT tr_code,j_trs from t_ghos } ) or die "Can't prepare statement: $DBI::errstr"; $sth->execute or die "Can't execute statement: $DBI::errstr"; my $rows = $sth->fetchall_arrayref(); my $num_rows = @$rows; if($num_rows > 0) { process($sth,$req); } sub process { my $sth = shift; my $type = shift; while (my $row = $sth->fetchrow_hashref) { next unless defined($row); } }

        Now please tell me any solution to count the number of rows

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://674741]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (2)
As of 2024-04-26 02:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found