Well, changing the code to:

my $eid=$mesg->entry($n)->get_value('emplId');
my $etp=$mesg->entry($n)->get_value('employeeType');
my $efte=$mesg->entry($n)->get_value('employeeFTE');
my $ear=$mesg->entry($n)->get_value('employeeTotalAnnualRate');
        
$csr_emp_info->execute($eid,$etp,$efte,$ear);

like you suggested fixed it.

Thanks.

On May 8, 2013, at 9:30 AM, Bill Ward <b...@wards.net> wrote:

> My guess is that get_value() is returning an empty array rather than an undef 
> scalar when the values are null. Try copying each one to a scalar variable 
> and including the list of variables in the execute(). It'd be more readable 
> that way anyway. Or if you must put them all one one line like this, add the 
> scalar() function on each argument.
> 
> 
> On Wed, May 8, 2013 at 9:18 AM, Bruce Johnson <john...@pharmacy.arizona.edu> 
> wrote:
> Getting the error:
> 
> DBD::Oracle::st execute failed: called with 3 bind variables when 4 are 
> needed [for Statement "insert into employee_fte_annualrate_l (emplid, 
> emptype_cd, fte, annual_rate) values(?,?,?,?)" with ParamValues: 
> :p1='22057713', :p2='R', :p3='1', :p4='47311'] at 
> /home/oraweb/perl/frs/kfsupdate.pl line 64, <DATA> line 581.
> 
> I'm pretty sure I count 4 placeholders and 4 parameter values in that error 
> message, so where is the '3 bind variables' coming from?
> 
> here's the cursor definition:
> 
> my $csr_emp_info = $lda->prepare("insert into employee_fte_annualrate_l 
> (emplid, emptype_cd, fte, annual_rate) values(?,?,?,?)");
> 
> I'm pulling the data from an LDAP query, here's the offending line 64 (where 
> $mesg is the returned LDAP object):
> 
> $csr_emp_info->execute($mesg->entry($n)->get_value('emplId'), 
> $mesg->entry($n)->get_value('employeeType'),$mesg->entry($n)->get_value('employeeFTE'),$mesg->entry($n)->get_value('employeeTotalAnnualRate'));
> 
> All the columns allow null entries, and these are all single-valued entries 
> in the LDAP schema.
> 
> 
> --
> Bruce Johnson
> University of Arizona
> College of Pharmacy
> Information Technology Group
> 
> Institutions do not have opinions, merely customs
> 
> 
> 
> 
> 
> -- 
> Check out my LEGO blog at brickpile.com
> Follow/friend me: Facebook • Flickr • Twitter • LinkedIn

-- 
Bruce Johnson
University of Arizona
College of Pharmacy
Information Technology Group

Institutions do not have opinions, merely customs


Reply via email to