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

Re: Re: Re: Is this Bad form? (DBI)

by LanceDeeply (Chaplain)
on Aug 25, 2003 at 19:17 UTC ( #286461=note: print w/replies, xml ) Need Help??

in reply to Re: Re: Is this Bad form? (DBI)
in thread Is this Bad form? (DBI)

Actually- I was only concerned that you cant ask the same handle to prepare a statement while iterating through a previously prepared statement. But after testing it, my assumption was wrong. In the subquery below, I delete data from the original query. And DBI handles it OK. --Me.
sub runSomeQueries { my $query = "select LocationID, LocationName from Location"; my $sth = $dbh->prepare($query); if ( $sth->execute() ) { while (my $data = $sth->fetchrow_hashref ) { runSomeSubQueries($$data{LocationID}); } } } sub runSomeSubQueries { my $locationID = shift; my $query = "Delete from Location where LocationID = ?"; my $sth = $dbh->prepare($query); $sth->execute($locationID); }
So- back to your question, passing the handle. Aside from the points raised by above. If you code your functions to accept a handle, you can pass differently configured handles through to your function.
  • you can hit different databases
    my $dbh_primary = DBI->connect(XXXX); my $dbh_backup = DBI->connect(YYYY); runSomeQueries($dbh_primary); runSomeQueries($dbh_backup);
  • you can pass in a handle with AutoCommit turned off
    my $dbh = DBI->connect(XXXX); my $dbh_tx = DBI->connect(XXXX, AutoCommit => 0); # non-transactioned runSomeQueries($dbh); runSomeSubQueries($dbh); # if you need to transaction a bunch of queries together runSomeQueries($dbh_tx); runSomeSubQueries($dbh_tx); if ( $OK ) { $dbh->commit(); } else { $dbh->rollback(); }


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://286461]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (3)
As of 2021-05-14 22:23 GMT
Find Nodes?
    Voting Booth?
    Perl 7 will be out ...

    Results (150 votes). Check out past polls.