Perl日記

PerlとかRubyとかPHPとかPythonとか

DBIのfinish()

入門Perl DBI

入門Perl DBI


よりfinishメソッドについて、初めて知ったことメモ。
まあ最近はOR/マッパ主流みたいだし、あんまり意味ないかもだけど。

(finish()は、ステートメントハンドルそれ自身を「終了する」のではないことを心にとどめておこう。それは、現時点のステートメントハンドルの実行のみを終了させる。再びそのハンドル上でexecuteOを呼び出すことができるのだ)。
P124

え、finishしてもまだ生きているんですか!!
というわけでやってみた。

#!/usr/local/bin/perl
use strict;
use warnings;
use DBI;

my $user = 'rightgo09';
my $pw = 'xxxxxxxx';
my $dbh = DBI->connect(
	"DBI:mysql:database=test;host=localhost",
	$user, $pw,
) or die;

my $sth = $dbh->prepare("SELECT id, name FROM user");
$sth->execute;

my $fetch = $sth->fetch;
print "@$fetch\n";

#=====================
$sth->finish;
$sth->execute; # once more
#=====================

$fetch = $sth->fetch;
print "@$fetch\n";


$sth->finish;

$dbh->disconnect;

__END__
$ ./db_finish.pl
1 rightgo09
1 rightgo09


できた。
でもカーソルは戻っちゃうよね。


これも知っていても使いどころがないパターンかな。