perl - помогает получить дополнительный столбец с помощью вызова dbi - PullRequest
1 голос
/ 20 июля 2011

Как мне получить другой столбец из fetchrow_hashref?

Например, моя оригинальная подпрограмма вернула одно значение.

 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;
    }

Я изменил свой sql, так что теперь я получаюВозвращаем 2 значения и хотим получить COL2

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

Вот где я вызываю get_val:

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?

1 Ответ

3 голосов
/ 20 июля 2011

Я уверен, что получить COL2 так же просто, как использовать $row->{COL2} вместо $row->{COL1} (как было в вашем коде).Итак, ваша функция get_val возвращает два значения:

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

и в вызывающей функции:

my ($val, $val2) = get_val();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...