in reply to Re: Re: Re: DBI (Prepare once execute many fails)
in thread DBI (Prepare once execute many fails)

Grygonos, it seems gmax and I disagree on this point.

My understanding is that DBI specifies that execute() is called on an active-statement handle, the DBD is supposed to automatically reset the Active flag (i.e. call finish()). Discussions on the DBI mailing list seem to have come to the consensus that finish() is unnecessary and can hide real problems. The one case where it might be useful is to instruct the DB to free up resources after you're done with an $sth that hasn't been fully fetched through.

So, in summary my reading of the documentation indicates it isn't needed and should be avoided as much as possible. There was a pretty extensive discussion of this in December/January on the list dbi-users@perl.org which you might want to check out.

For DBD::ODBC there was a bug in versions prior to 1.02 that required finish() in certain circumstances, but that has been resolved and it's worth upgrading to a more recent version.

Hope this helps!


-Tats
  • Comment on Re: Re: Re: Re: DBI (Prepare once execute many fails)