My question would be, why are you trying to get a return value from the execute()? Im not sure if this is a problem or not, because I have never done that before. I do know that it works great when I don't do that. Just my humble opinion.
Comment on Re: DBI + 'SELECT *' - Memory Use Galore?