I am working on a quick tool to update some records in an oracle database. The code is similar to some other tools I've cobbled together, but in this case, the where clause has a "column in list" clause. The relevant pieces of code are:
my $aenlist = "(1127, 1557, 1661, 3030, 3982, 5205, 453, 8838, 9338)"; my $tmpsuper1 = 406; $updateSuper = $oraProdDBH->prepare ( "UPDATE HR_INFO SET " . "SUPERVISOR_EMP_NO=? , REC_MOD_DATE=SYSDATE " . "WHERE " . "ALT_EMP_NO IN ? AND SUPERVISOR_EMP_NO = 0" ) or die "Failed to prepare - $DBI::errstr\n"; $urc = $updateSuper->execute($tmpsuper1, $aenlist) or die "Failed to execute - $DBI::errstr\n"; When I try to run the code, DBI returns an error saying that the value supplied by $aenlist isn't a number. And that's true - it is a string. So, I tried setting $aenlist to (1127, 1557, 1661, 3030, 3982, 5205, 453, 8838, 9338); and perl tells me there's a useless constant. That's when I thought that what I really need to do was use @aenlist. Alas, when I changed the execute to say my @aenlist = (1127, 1557, 1661, 3030, 3982, 5205, 453, 8838, 9338); : : my $urc = $updateSuper->execute($tmpsuper1, @aenlist) or die "Failed to execute - $DBI::errstr\n" ; now I get a DBD::Oracle::st execute failed error that I called execute with 10 variables when 2 were needed. So, I am hoping someone might be able to point me to some information about how to encode the execute so that I pass a list to the where clause. Thank you so much for your help.