You might be better off posting this to the dbi-users mailing list as other than tux I don't think any of the other DBI/DBD maintainers hang around here much.
That error message comes from Driver_xst.h in DBI which is included in every DBD:
static int dbdxst_bind_params(SV *sth, imp_sth_t *imp_sth, I32 items, I32 ax) { /* Handle binding supplied values to placeholders. */ /* items = one greater than the number of params */ /* ax = ax from calling sub, maybe adjusted to match items */ dTHX; int i; SV *idx; if (items-1 != DBIc_NUM_PARAMS(imp_sth) && DBIc_NUM_PARAMS(imp_sth) != DBIc_NUM_PARAMS_AT_EXECUTE ) { char errmsg[99]; /* clear any previous ParamValues before error is generated */ SV **svp = hv_fetch((HV*)DBIc_MY_H(imp_sth),"ParamValues",11,F +ALSE); if (svp && SvROK(*svp) && SvTYPE(SvRV(*svp)) == SVt_PVHV) { HV *hv = (HV*)SvRV(*svp); hv_clear(hv); } sprintf(errmsg,"called with %d bind variables when %d are needed", (int)items-1, DBIc_NUM_PARAMS(imp_sth)); DBIh_SET_ERR_CHAR(sth, (imp_xxh_t*)imp_sth, "-1", -1, errmsg, +Nullch, Nullch); return 0; }
I don't much like the look of that I32 having 1 subtracted from it and then cast to an int but I cannot see how 3443804 was arrived at right now.
Perhaps the tail end of a DBD::Oracle trace when this happens might help. Run your code again with DBI_TRACE=15=x.log set and exported and show us the tail end of the x.log file.
As I said, you'll probably do better on dbi-users mailing list but they are bound to ask for versions of perl, DBI, DBD::Oracle, Oracle, Oracle client and the log file I suggested you provide.
In reply to Re: DBI Oracle Input Array Binds
by mje
in thread DBI Oracle Input Array Binds
by hhferreira
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |