• ベストアンサー

DBIで抽出処理

PerlのDBIで質問があります。 以下のようなDBがあり、プレースフォルダを使っているのですが 0,2件のマッチはエラーとなり、1件を変数(@hozon)に入れる処理をしたいのですがどのように 記述したらよいのでしょうか? @hikaku = qw(国語 算数 理科 保健); @hozon = (); FLD1 FLD2 ----------- 50 国語 0 国語 60 算数 70 理科 80 社会 $query = qq{select FLD1 from TBL1 where FLD2=?;}; $sth = $dbh->prepare( $query ) or die "Cannot preprae. $query" . $dbh->errstr(); for($i=0; $i<=$#hikaku; $i++){ $sth->bind_param(1, $hikaku[$i]); $sth->execute() || die $sth->errstr; # 0,2件のマッチはエラーとなり、1件を変数(@hozon)に入れる処理をしたいのですがどのように # 記述したらよいのでしょうか? ???? }

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

FETCHしないと件数は得られなかったような気がします。 正常なデータはデータ値が必要なのだから、素直に最大2件までのFETCHして、 判断すればよいかと。 (事前にCOUNT(*)しても良いかとは思いますが、エラーの頻度が少なければFETCHする方が早いと思いますよ)

その他の回答 (1)

noname#246547
noname#246547
回答No.1

perlもDBIも使用したことが無いですけど、 $sth->execute() の後で $sth->rows; を追加して、取得できたレコード数が1件ならば正常プロセスを実行するようにすればよいのでは?

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1095383

関連するQ&A