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); } #### my $dbh_primary = DBI->connect(XXXX); my $dbh_backup = DBI->connect(YYYY); runSomeQueries($dbh_primary); runSomeQueries($dbh_backup); #### 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(); }