アルパカDiary Pro

はてなブログProではありません

PerlでのDBアクセス

PerlでのDBアクセスと言えばDBIモジュールなどがありますよね。
こんなの。

$dsn = 'DBI:mysql:mydb';
$user = 'webuser';
$password = 'mypass';
$dbh = DBI->connect($dsn, $user, $password,
    { RaiseError => 1, AutoCommit => 0 });
my $sth = $dbh->prepare(
    "SELECT f2, f3 FROM table WHERE f1=?"
);

$sth->execute;
while(@row = $sth->fetchrow_array) {
    print "@row\n";
}
$dbh->disconnect;

ただ、これだとSELECTの結果を一気に持ってきた後に処理するので、
数百万件レコードがSELECT対象だとちょっと使えませんよね。


要はカーソル使いたいんですけど。
調べてみましたが、どうやらPerlでカーソルフェッチ使う方法はなさそうです。
やっぱりこういう場合はpl/pgsqlかC(ecpg)しかなさそう…。
実際、Perl便利だから全部Perlに移行したかったんだけどなー