Cirollo has asked for the wisdom of the Perl Monks concerning the following question:
I've bumped into a rather odd problem when trying to use some of the aggregate DBI functions, like selectcol_arrayref. Since many of them return array references, I tend to dereference the array when I call the method. For example,
My problem occurs when the statement in $sql returns zero rows. Consider the following script:@ary = @{$dbh->selectcol_arrayref($sql)};
In the second attempt to make the query, $dbh->errstr is undef, meaning that the DB query worked fine. But, </code>$!</code> contains this:#!/usr/bin/perl -w use strict; use DBI; $\ = "\n"; # Input dbname, user & pass on the command line my ($dbname, $dbuser, $dbpass) = @ARGV; my $dbh = DBI->connect("DBI:Oracle:$dbname", $dbuser, $dbpass, {RaiseE +rror => 1}) or die $DBI::errstr; # This query returns no rows my $sql = qq~ SELECT dummy FROM dual WHERE dummy = '1' ~; # This works just fine... my $ref = $dbh->selectcol_arrayref($sql) or die $dbh->errstr, $!; print "\$ref is defined: $ref" if defined $ref; print for @$ref; # But this one dies! my @ary = @{$dbh->selectcol_arrayref($sql)} or die $dbh->errstr, $!; print for @ary;
If I remove the die, everything works the way I want it to, but I would like to know why it is dying to begin with.No such file or directory at ./dbtest.pl line 17.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Dereferencing and DBI methods
by runrig (Abbot) on Jul 25, 2001 at 02:22 UTC | |
Re: Dereferencing and DBI methods
by aquacade (Scribe) on Jul 25, 2001 at 02:03 UTC | |
by Cirollo (Friar) on Jul 25, 2001 at 04:03 UTC | |
by aquacade (Scribe) on Jul 25, 2001 at 05:13 UTC | |
by Cirollo (Friar) on Jul 25, 2001 at 17:39 UTC |
Back to
Seekers of Perl Wisdom