in reply to SQL in Perl and setting variables

You will want to use a placeholder on the update statement for efficiency (especially with Oracle):
my $dbh = DBI->connect(...,{RaiseError=>1}); $asql = <<EOT; SELECT batch_line, row_id FROM test_batch_lines WHERE exe_c = 'N' EOT my $sel_h = $dbh->prepare($asql); $bsql = <<EOT; UPDATE test_batch_lines SET exe_c = 'Y' WHERE exe_c = 'N' AND row_id = ? EOT my $upd_h = $dbh->prepare($bsql); $sel_h->execute; $sel_h->bind_columns(\my ($batch_line, $row_id)); while ($sth->fetch) { # ... $upd_h->execute($row_id); }