Abrufen aller Datensätze, die mit Perl DBI

Habe ich ein Perl-Skript, dass verwendet eine DBI Verbindung. Ich öffnen und Lesen der SQL-Skript-Datei über eine sub-routine. Ich Schreibe nur einen Eintrag, wo ich noch zwei (drei Datensätze insgesamt). Wie bekomme ich alle Datensätze?

Ergebnis:

Alert:OUTBOUND_DATA:0

Skript:

my $dbh_oracle = DBI->connect(
          $CFG{oracle_dbi_connect},
          $CFG{db_user},
          $CFG{db_cred},
          {AutoCommit => 0,
           RaiseError => 0,
           PrintError => 0}) or die ("Cannot connect to the database: ".$DBI::errstr."\n");

my ($val1, $val2) = get_data();
print "Alert:$val1:$val2\n";

send_email("Alert:$val1:$val2");

sub get_data
{
  undef $/;
  open (my $QFH, "< /sql/summary.sql") or die "error can't open this file $!";
  my $sth= $dbh_oracle->prepare(<$QFH>) or
      die ("Cannot connect to the database: ".$DBI::errstr."\n");
  $sth->execute;
  close $QFH;
  my $row = $sth->fetchrow_hashref;
  $sth->finish;
  return @$row{'MYTABLE','FLAG'};
}

sub send_email {
    my $message = shift;
    open (MAIL, "|/usr/sbin/sendmail -t") or die "Can't open sendmail: $!";
    print MAIL "To: me\@test.com\n";
    print MAIL "From: Data\n";
    print MAIL "\n";
    print MAIL $message;
    close MAIL;
}
exit;

ERGEBNISSE aus der Abfrage: (mehr als 1 rec)

MYTABLE                  FLAG
----------------------- ----------
OUTBOUND_DATA         0
MSGS_BY_DIM                  0
INBOUND_DATA         0

3 rows selected.
Sie könnte RaiseError => 1 und beseitigen Sie die Notwendigkeit für diejenigen, die () - Aufrufe.
Auch Stelle ich fest, dass Sie beide RaiseError und PrintError deaktiviert. Die erste bewirkt, dass Fehler tödlich sein und der zweite wird mindestens drucken Sie (aber nicht kill your code). Sie sollten wahrscheinlich mindestens einer dieser auf den Wert true, damit Ihre Fehler stillschweigend verworfen.

InformationsquelleAutor cjd143SD | 2012-04-20

Schreibe einen Kommentar