for my $id (@id){ my @query = ( [1,"DECLARE GLOBAL TEMPORARY TABLE SESSION.temp SELECT name,id FROM mytable ON COMMIT PRESERVE ROWS WITH NORECOVERY"], [2,"SELECT name FROM SESSION.temp WHERE id=? AND salary >= 1","csvfile2_$id.csv"], [2,"SELECT id FROM mytable WHERE id=? AND salary >= 1","csvfile1_$id.csv"], ); for (@query){ my ($type,$sql,$filename) = @$_; if ($type == 1){ $dbh->do($sql); } elsif ($type == 2){ run_query($sql,$filename,$id); } } }