http://www.perlmonks.org?node_id=700450


in reply to Oracle mass update script request.

Assuming your update statement is correct, given your database structure and Oracle (I'm more familiar with mySQL):
use DBI; use strict; my $user = 'user'; my $pass = 'pass'; my $db = 'database'; my $filename = 'filename.txt'; my $query = qq* update ( select t1.field1, 999 deact_status from schema.table1 t1 inner join schema.table2 t2 on t1.id = t2.id where t2.field2 = ? ) set field1 = deact_status *; my ($dbh, $sth, $handle); $dbh = DBI->connect("dbi:Oracle:$db", $user, $pass) || die "Couldn't connect to database: " . DBI->errstr; open ($handle, $filename) || die "Couldn't open $filename for read.\n"; while (<$handle>) { chomp; $sth = $dbh->prepare_cached($query, {}, 1); $sth->execute($_); } $dbh->disconnect();
This is untested, but ought to work in theory.