Hi,

I have some code which uses execute_array but it appears when it fails
my error handler is not called and no error is printed despite setting
PrintError and RaiseError. The script below illustrates. Is it correct that an
error can occur in execute_array and it not cause a die when RaiseError is set?

use DBI;
use strict;
use Data::Dumper;

sub fred
{
    print "Error Handler called\n";
    print Dumper([EMAIL PROTECTED]);
}

my $dbh = DBI->connect(
    'DBI:mysql:mjetest', 'xxx', 'yyy',
    { RaiseError => 1, PrintError => 1, HandleError => \&fred});
$dbh->do(q/drop table if exists mytest/);
$dbh->do(q/create table mytest (a int primary key, b char(20))/);

my $sth = $dbh->prepare(q/insert into mytest values (?,?)/);
$sth->bind_param(1, 1);
$sth->bind_param(2, 'onetwothree');
$sth->execute;

$sth->bind_param_array(1, [51,1,52,53]);
$sth->bind_param_array(2, ['fiftyone', 'fiftytwo', 'fiftythree', 'one']);
my @tuple_status;
my $inserted = $sth->execute_array( { ArrayTupleStatus => [EMAIL PROTECTED] } );
print "Error from execute_array - $DBI::errstr\n" if (!$inserted);

which produces:

Error from execute_array -

even though the trace indicates:

    <- prepare('insert into mytest values (?,?)')= DBI::st=HASH(0x82a1b80) at
execute_array.pl line 17
    <- bind_param(1 1)= 1 at execute_array.pl line 18
    <- bind_param(2 'onetwothree')= 1 at execute_array.pl line 19
    <- execute= 1 at execute_array.pl line 20
    <- bind_param_array(1 ARRAY(0x829d4f8))= 1 at execute_array.pl line 22
    <- bind_param_array(2 ARRAY(0x829d534))= 1 at execute_array.pl line 23
    <- execute_array(HASH(0x829d5c4))= undef at execute_array.pl line 26


Thanks

Martin
--
Martin J. Evans
Easysoft Ltd, UK
http://www.easysoft.com

Reply via email to