• 締切済み

DBIを使ってSelect文 複数のカラム、複数のレコードを取得するには?

Perl DBIを使用してDB検索する部分で質問させてください。 検索してきた複数のレコードの中のカラムを全て取得して そのパラメータを一括で返して 別処理で展開させたいのですがうまくいきません。 テーブルAAAに フィールドa,b,cがあり、レコードが3つ入っているとします。 テーブルAAA a b c ------ 1 2 3 4 5 6 7 7 7 sub AAA(){ $sqlState= "select a,b,c from AAA"; $sth= $dbh->prepare($sqlState); $sth->execute; while (@row = $sth->fetchrow) { ($a,$b,$c)= @row; } return @row; } とやれば、whileの中ではそれぞれのレコードが取得できるのですが それをsub AAAを呼び出した側で 一度に受け取り、それを再び 1レコードづつ取り扱いたいのです。 イメージは @row = &AAA(); foreach(@row){ ($a,$b,$c)=@row print $a... } とやると、全てのレコードが、foreach内で取得できる ・・・ような感じです。 わかりにくい説明で申し訳ないですが、 どうぞよろしくお願い致します。

みんなの回答

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

無名配列へのリファレンスの配列で、2次元配列を表現すれば良いのでは。 こんな感じ: sub AAA(){ my @result; my $sql = "select a,b,c from AAA"; my $sth= $dbh->prepare( $sql ); $sth->execute; while ( my @r = $sth->fetchrow) { push @result, [ @r ]; } return @result; } @row = &AAA(); 無名配列リファレンスについては、ドキュメントperlrefをご覧ください。