in reply to sth->execute returns undef when successful

Still have no clue why it returns a undef after a successful table creation, but to get around it I have set the RaiseError => 1 and put an eval around the prepare and execute. This seems to be working and still capturing any errors that might occur.
# Prepare the SQL query eval { $sth = $dbh->prepare($$sql); }; if ($@) { confess("ERROR:$0: Error in SQL prepare \n $@ "); } # Execute the SQL Query eval { $sth->execute(); }; if ($@) { $dbh->rollback(); confess("ERROR:$0: Error in SQL execute \n $@ "); }