dポイントプレゼントキャンペーン実施中!

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内で取得できる
・・・ような感じです。

わかりにくい説明で申し訳ないですが、
どうぞよろしくお願い致します。

A 回答 (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をご覧ください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!