Hello, I am trying to execute an update to an Access database. The statement has two placeholders, and I put two variables between the parentheses in the execute statement, and yet Access tells me it expects 3 parameters.
This is the prepare: my $sth_del = $dbh->prepare( "UPDATE [DBI_TEST] SET retired_date = ? WHERE person_id = ?") or die "Cant prepare retired date: " . $dbh->errstr; This is the execute: foreach my $del_rec (@del_recs) { $sth_del->execute( $ret_date, $del_rec ) or die "Cant insert retired date: " . $dbh->errstr; } I really don't understand why it wants three parameters. What exactly does this mean? Thanks, Alan The result I get from a level two trace is: DBI::db=HASH(0x2278c2c) trace level set to 2 in DBI 1.14-nothread -> prepare for DBD::ODBC::db (DBI::db=HASH(0x2278c68)~0x2278c2c 'UPDATE [DBI _TEST] SET retired_date = ? WHERE person_id = ?') dbd_preparse scanned 2 distinct placeholders dbd_st_prepare'd sql f37040784 UPDATE [DBI_TEST] SET retired_date = ? WHERE person_id = ? <- prepare= DBI::st=HASH(0x2278ff8) at jcdb_update.pl line 254. -> execute for DBD::ODBC::st (DBI::st=HASH(0x2278ff8)~0x2278f74 '#11/1/2001# ' 22218) bind 1 <== '#11/1/2001#' (attribs: ) bind 1 <== '#11/1/2001#' (size 11/12/0, ptype 4, otype 1) bind 1: CTy=1, STy=VARCHAR, CD=80, Sc=0, VM=11. bind 2 <== '22218' (attribs: ) bind 2 <== 22218 (size 5/6/0, ptype 6, otype 1) bind 2: CTy=1, STy=VARCHAR, CD=80, Sc=0, VM=5. dbd_st_execute (for sql f37040784 after)... st_execute/SQLExecute error -1 recorded: [Microsoft][ODBC Microsoft Access Drive r] Too few parameters. Expected 3. (SQL-07001)(DBD: st_execute/SQLExecute err=-1 )