in reply to DBI help please

execute() only accepts values to pass "into" the query. You can't use it as a two way communication channel. Each parameter must match exactly one place holder, and each place holder will be replaced by the matching parameter. The value of "$value" (and any other parameters) will be exactly the same after the query as it was before.

If this were MySQL you would probably read the $dbh->{'mysql_insertid'} value to get the inserted auto-increment key, after the execute(). I don't know how Oracle accomplishes the same trick.