On 04-Jul-2006 John Scoles wrote: > It memory serves me correctly I think any errors that are generated is > stored in the ArrayTupleStatus have a parse through that array to see it the > error is stored there.
John, They are stored in the ArrayTupleStatus. I'm not saying I can't get them, but I rather thought since they were errors that RaiseError would cause a die and that my HandleError routine would be called - neither seems to occur. Unless I'm mistaken this seems to make execute_array a special case and thus RaiseError should say it causes a die for all error in methods except execute_array (and similarly for HandleError). Martin -- Martin J. Evans Easysoft Ltd, UK http://www.easysoft.com > > ----- Original Message ----- > From: "Martin J. Evans" <[EMAIL PROTECTED]> > To: <dbi-users@perl.org> > Sent: Tuesday, July 04, 2006 6:37 AM > Subject: Is it correct that execute_array does not raise/print an error > > >> 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 >> >>