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.
In reply to Dereferencing and DBI methods by Cirollo
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |