Cool. That whole scalar vs list context thing is one of Perl's biggest strengths, but also one of its biggest weaknesses (in that it is a common source of bugs like this). When you see head-scratching problems, it's one of the first things to look for.
On Wed, May 8, 2013 at 9:39 AM, Bruce Johnson <john...@pharmacy.arizona.edu>wrote: > 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 > > > -- Check out my LEGO blog at brickpile.com <http://www.brickpile.com/> Follow/friend me: Facebook <http://facebook.com/billward> • Flickr<http://flickr.com/photos/billward/>• Twitter <http://twitter.com/williamward> • LinkedIn<http://www.linkedin.com/pub/william-ward/63/393/985/>