On Tue, Nov 23, 2004 at 10:13:30PM +0000, Bart Kelsey wrote:
> I'm having some trouble with DBD::Oracle...
> When I execute this code:
> ***
>
> $sth = $dbh->prepare("select * from abbrev where type = ?");
> $sth->execute("PAYMENT");
> while((@row) = $sth->fetchrow_array) {
> print(join(", ", @row), "\n");
> }
> $sth->finish;
[Don't call finish at the end of fetch loops. See the docs.]
> ... no rows are returned. However, when I execute this code here:
>
> $sth = $dbh->prepare("select * from abbrev where type = 'PAYMENT'");
>
> ... it correctly returns a row. Does anyone know what the problem might be
I'd guess the "type" column is a CHAR field.
Try:
use DBD::Oracle qw(:ora_types);
...
$dbh->{ora_ph_type} = ORA_CHAR
before the prepare(). See
http://search.cpan.org/~timb/DBD-Oracle-1.16/Oracle.pm#Database_Handle_Attributes
See also the String Comparison section in the Datatypes chapter of the
Oracle OCI manual for more details.
Tim.