Как получить все возвращенные строки с каждым сообщением об ошибке оракула в одну переменную, используя perl - PullRequest
1 голос
/ 01 марта 2010

Как мне получить все строки "$dblink is down" в одну $l_msg строку?

В идеале я хотел бы получить ошибку, возвращенную оракулом при неудаче, и я не могу найти способ решить эту проблему.

my $dblinks = $l_dbh->selectcol_arrayref("select dbname from db_link"); 
for my $dblink (@$dblinks) { 
  my $l_results = eval { 
    my ($l_erg) = $l_dbh->selectrow_array("SELECT dummy||'OK' " 
      . $l_dbh->quote_identifier($dblink, undef, "dual") ); 
    $l_erg; 
  }; 
   while (@l_row = $l_results->fetchrow_array) {
    $l_erg=$l_row[0];
    if ($l_results !~ /XOK/) { 
      @l_errstr=();
      l_msg="$dblink is down with @l_errstr"
      #  dblink45667 is down with ORA-12154"

    } else { 
      say "$dblink is is up"; 
    } 
  }
}

1 Ответ

2 голосов
/ 01 марта 2010

Как насчет объединения их в переменную вне цикла:

my $dblinks = $l_dbh->selectcol_arrayref("select dbname from db_link"); 
my $l_msg = '';
for my $dblink (@$dblinks) { 
  my $l_results = eval { 
    my ($l_erg) = $l_dbh->selectrow_array("SELECT dummy||'OK' " 
      . $l_dbh->quote_identifier($dblink, undef, "dual") ); 
    $l_erg; 
  }; 
   while (@l_row = $l_results->fetchrow_array) {
    $l_erg=$l_row[0];
    if ($l_results !~ /XOK/) { 
      @l_errstr=();
      l_msg .= "$dblink is down with @l_errstr"
      #  dblink45667 is down with ORA-12154"

    } else { 
      say "$dblink is is up"; 
    } 
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...