Re: Surprising DBD::Oracle error raised
"Martin J. Evans" <[email protected]>
| Newsgroups | gmane.comp.lang.perl.modules.dbi.general |
|---|---|
| Message-ID | <[email protected]> |
On 04/02/14 19:36, David Nicol wrote:
> $price_sth->execute;
> my ($o_file_price) = $price_sth->fetchrow_array();
> if ($price_sth->fetch) {
> $this->log_error('ERROR: scalar select returned second row at
> %s line %d', __FILE__, __LINE__);
> }
>
>
> I expected the fetch to return undef, but it throws an Oracle error.
> My best ignorant guess here is that fetchrow_array does some cleanup
> on one-row datasets, but that isn't documented.
>
> Advise?
>
>
That is in deed interesting. When I run the following with DBD::ODBC to MS SQL Server:
use strict;
use warnings;
use DBI;
my $h = DBI->connect();
eval {
$h->do(q/drop table mje/);
};
$h->do(q/create table mje (a int)/);
my $s = $h->prepare(q/insert into mje values(?)/);
$s->execute(1);
$s->execute(2);
$s = $h->prepare(q/select * from mje where a = 1/);
$s->execute;
my ($row) = $s->fetchrow_array;
print "$row\n";
$row = $s->fetch;
print "$row\n";
I get:
1
Use of uninitialized value $row in concatenation (.) or string at mje/fetch_off_end.pl line 20.
However, I get the same with DBD::Oracle so how is you code different from the above.
Martin