Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

Re: Using a single database handle or multiple handles

by tobyink (Abbot)
on Oct 11, 2012 at 13:45 UTC ( #998446=note: print w/replies, xml ) Need Help??

in reply to Using a single database handle or multiple handles

Depends on the database. For most, a single handle is preferable.

Microsoft SQL Server (and presumably Sybase too), when connected to using the TDS libraries does not allow multiple concurrent queries to execute on the same handle. You need to finish one query before making another. Thus patterns where you do:

my $results = $dbh->someQuery; while (my $row = $results->fetchrow_array) { $dbh->someOtherQuery; }

will not work unless you open a second connection. (I think some newer versions of TDS do actually emulate concurrent queries by transparently opening a second connection when required.)

perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

Replies are listed 'Best First'.
Re^2: Using a single database handle or multiple handles
by mje (Curate) on Oct 12, 2012 at 09:40 UTC

    Newer MS SQL Server drivers (and some other commercial ones) have an attribute called MARS_Connection which when set to 1 enables Multiple Active Result Sets. However, it is generally slower and has a number of restrictions. I wrote a small article on it for DBD::ODBC at Multiple Active Statements (MAS) and DBD::ODBC.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://998446]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (5)
As of 2018-04-21 20:00 GMT
Find Nodes?
    Voting Booth?