my @values = ( [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ], [ 'a', 'b', 'c' ] ); my $sql = "Insert into tableone values(?, ?, ?); my $loadHandle = $dbh->prepare($sql); for (@values) { $loadHandle->execute(@$_) or die "Could not execute SQL statement $sql " . " with values ( @$_ )... $DBI::errstr\n "; } #### my @SQL_statements = ( "create table x(i int)", "insert into x values (1)", "update x set i = i * 10 " ); $dbh->begin_work(); for (@SQL_statements) { eval { $dbh->do($_)}; if ($@) { $dbh->rollback(); die "error executing query '$_', $DBI::errstr\n"; } } $dbh->commit();