Re: Is it correct that execute_array does not raise/print an error



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.


----- Original Message -----
From: "Martin J. Evans" <martin.evans@xxxxxxxxxxxx>
To: <dbi-users@xxxxxxxx>
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(\@_);
}

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 =>
\@tuple_status } );
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



.



Relevant Pages

  • Re: subscript out of range
    ... I don't have a big problem with an error handler in these cases ... > Dim lplpSafeArray As Long ... > ' If the array has 1 or more dims, ...
    (microsoft.public.vb.general.discussion)
  • BDB-BASIC Snapshot Release 0.25 Now Available
    ... The Error Handler has changed. ... Documented several undocumented commands. ... EDIT command support ... FIRST and LAST functions added for array ...
    (comp.lang.basic.misc)
  • Is it correct that execute_array does not raise/print an error
    ... 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. ... error can occur in execute_array and it not cause a die when RaiseError is set? ...
    (perl.dbi.users)
  • Re: Array Dimensioned or not
    ... create an error handler and ... then access the first element of the array. ... Not elegant, but simple ...
    (microsoft.public.vb.general.discussion)
  • Re: Array Dimensioned or not
    ... Or call UBound. ... create an error handler and ... > then access the first element of the array. ...
    (microsoft.public.vb.general.discussion)