LAMPPが日本でもようやく普及してきたおかげで、PHPやRuby on Railsのソースが簡単に手に入るようになりました。わたしはPerlをインタープリターとして使用していますが、10年以上前に独学で覚えたので、情報量が少なくとても苦労した覚えがあります。
それに比べたら、現代はとても楽だと言えるでしょう。
それでも、Perlは使用される機会が減少の傾向にあり、PHPなどと比較すると、ネットや書籍で手に入る情報用は以外に少ないです。
先日も知人からPerlからMySQLのデータのテーブルに格納されているデータ数をカウントするソースを教えて欲しいという依頼を受けました。
試しにネットで検索したところ、近似値のソースは幾つも見つかりましたが、完全に利用出来るソースが見つからなかったので、ここに書き留めておきます。
ソースは簡単です。
my $rows = $dbh->selectrow_array($query);
if ($rows ==0){
$row =0;
}
else{
my $sth = $dbh->prepare($query); # $queryの実行準備
$sth->execute(); # $queryを実行する
my @rows = $sth->fetchrow;
$row = $rows[0]; # 該当の登録件数を数える
}
説明
まず、
my $rows = $dbh->selectrow_array($query);
でデータの有無を判定して、データがあれば
my $sth = $dbh->prepare($query); # SQL($query文)の実行準備
$sth->execute(); # SQL($query文)を実行する
my @rows = $sth->fetchrow;
に移行します。
データが無ければ「0ゼロ」を返します。
該当する数を
$row = $rows[0];
で変数$rpwに代入します。
短い構文ですが、多用するので、わたしはサブルーチン化しています。
例えば
my $query = qq{ select count(*) from $db_name where NUM like "$num%" && EX_CTG="$ctg" };
my $row = &count_data($query); # 該当のデータを数える
sub count_data { }
というサブルーチンを作成しておけば、わずか2行でデータの数を取得出来ます。
とても便利です。
mizunuma 4月 12th, 2009
Posted In: MySQL Server