http://www.perlmonks.org/?node_id=910793

"You passed $nparm parameters where $n_req required"

Once was a correct fix. Then all moved from DBD::File to
DBI::DBD::SqlEngine and now SQL::Statement::Param roars its ugly head :)

I'd like to suggest the current fix, for which I am convinced is the
correct solution (unlit backends change again)

I do *not* have a testcase for this as I do not see the impact of
JOIN's and so here

--8<--- suggested change
diff --git a/lib/DBI/DBD/SqlEngine.pm b/lib/DBI/DBD/SqlEngine.pm
index 51f2a0a..bcac88a 100644
--- a/lib/DBI/DBD/SqlEngine.pm
+++ b/lib/DBI/DBD/SqlEngine.pm
@@ -781,7 +781,9 @@ sub execute
     {
         # bug in SQL::Statement 1.20 and below causes breakage
         # on all but the first call
-        unless ( ( my $req_prm = $stmt->params() ) == ( my $nparm = @$params ) 
)
+        my @req_prm = $stmt->params ();
+        my $n_req = @req_prm == 1 && ref $req_prm[0] ? $req_prm[0]->num : 
scalar @req_prm;
+        unless ( $n_req == ( my $nparm = @$params ) )
         {
             my $msg = "You passed $nparm parameters where $req_prm required";
             $sth->set_err( $DBI::stderr, $msg );
-->8---

-- 
H.Merijn Brand  http://tux.nl      Perl Monger  http://amsterdam.pm.org/
using 5.00307 through 5.14 and porting perl5.15.x on HP-UX 10.20, 11.00,
11.11, 11.23 and 11.31, OpenSuSE 10.1, 11.0 .. 11.4 and AIX 5.2 and 5.3.
http://mirrors.develooper.com/hpux/           http://www.test-smoke.org/
http://qa.perl.org      http://www.goldmark.org/jeff/stupid-disclaimers/

Reply via email to