2011-07-19 14 views
1

fetchrow_hashrefから別のカラムを取得するにはどうすればよいですか?perl - dbiコールで追加カラムを取得するのに役立ちます

たとえば、私の元のサブルーチンは1つの値を返しました。

sub get_val 
    { 
     undef $/; 
     open (my $FH, "< tst.sql") or die "error can't open this file $!"; 
     my $sth= $dbh->prepare(<$FH>) || 
      die ("Cannot connect to the database: ".$DBI::errstr."\n"); 
     $sth->execute; 
     close $FH; 
     my $row = $sth->fetchrow_hashref; 
     $sth->finish; 
     return $row->{COL1}; 
     print $row; 
    } 

私は今、私はお返しに2つの値を取得し、COL2

COL1  COL2 
------ ------- 
1  A 

を取得したいよ、私はget_valで呼び出すのはここで、私のSQLを変更:

my $dbh = DBI->connect(
     $abc{oracle_dbi_connect}, 
     $abc{usr}, 
     $abc{pw}, 
     {AutoCommit => 0,RaiseError => 0, PrintError => 0}) || die ("Cannot connect to the database: ".$DBI::errstr."\n"); 
my $val = get_val(); 
$dbh->disconnect(); 

私はCOL2の結果を新しい$ val2に割り当てる必要があるでしょうか?

答えて

3

COL2は、$row->{COL1}の代わりに$row->{COL2}を使用するのと同じくらい簡単です(コード内のとおり)。だから、あなたのget_val関数の戻り2つの値を作る:

return @$row{'COL1', 'COL2'}; 

と呼び出し元の関数で:

my ($val, $val2) = get_val(); 
+0

はあなたに感謝。今すぐ素晴らしい作品です:-) – jdamae

関連する問題