@kyanny's blog

My life. Opinions are my own.

DBI.pm ではひとつのステートメントハンドルで複数の SQL を実行することはできない?

!/usr/local/bin/perl
use strict;
use DBI;
my $dbh = DBI->connect('dbi:mysql:hoge', 'root', '');
my $sth = $dbh->prepare(<<SQL);
create temporary table hoge (id int);
drop table hoge;
SQL
$sth->execute();
$sth->finish;

こういうふうに、 ; で区切って複数の SQL をかいておいて一度に実行させることはできないようだ。

http://search.cpan.org/~timb/DBI-1.607/DBI.pm#prepare

Some command-line SQL tools use statement terminators, like a semicolon, to indicate the end of a statement. Such terminators should not normally be used with the DBI.

ここにかいてあるこれだろうか。