Thread Datenbankabfrage durchläuft while nicht vollständig
(2 answers)
Opened by Stefan_S at 2016-02-26 12:54
Servus,
mit DBD::ODBC frage ich eine Sybase-Datenbank ab (DB1). Die Ergebnisse vergleiche ich mit einer mySQL-Datenbank, die ich per DBI abfrage (DB2). Ziel ist, jeden Datensatz aus DB1 mit allen Datensätzen aus DB2 zu vergleichen. Meine Schleife sieht derzeit wie folgt aus (hab's auf Print-Ausgaben reduziert): Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 my ( $artikelnr_s, $bestand_s ); my ( $id_t, $artikelnr_t, $timestamp_t, $bestand_t ); print "=====================================================================\n"; while ( ( $artikelnr_s, $bestand_s ) = $dbs_result->fetchrow_array() ) { print Dumper ( "DB1: \t " . $artikelnr_s . "\t" . $bestand_s ); print "\n"; # alle Datensätze aus dem Ziel einlesen while ( ( $id_t, $artikelnr_t, $timestamp_t, $bestand_t ) = $dbt1_result->fetchrow_array() ) { print Dumper ( "DB2: \t " . $artikelnr_t . "\t" . $bestand_t ); } print "--------------------------------------------------------------------\n"; } print "\n\n\n"; In DB1 befinden sich zwei Datensätze. In DB2 befinden sich ebenfalls zwei Datensätze. Als Ergebnis erhalte ich: Code: (dl
)
1 ==================================================================== Im ersten Durchlauf wird der erste Datensatz aus DB1 gelesen. Dazu beide Datensätze aus DB2. Im zweiten Durchlauf wir der zweite Datensatz aus DB1 gelesen. Aber leider keiner mehr aus DB2. Richtig wäre die Ausgabe aus meiner Sicht so: Code: (dl
)
1 ==================================================================== Im Error-Log finde ich folgende Fehlermeldung: Code: (dl
)
DBD::mysql::st fetchrow_array failed: fetch() without execute() at C:\...\import.pl line 8. Wo ist mein Denkfehler? Grüße und Dank Stefan |