Thread Datenbankabfrage durchläuft while nicht vollständig (2 answers)
Opened by Stefan_S at 2016-02-26 12:54

Stefan_S
 2016-02-26 12:54
#183988 #183988
User since
2014-04-15
30 articles
BenutzerIn
[default_avatar]
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
2
3
4
5
6
7
8
9
====================================================================
$VAR1 = 'DB1: AGI14077 66.28';

$VAR1 = 'DB2: AGI14077 66.28';
$VAR1 = 'DB2: AGI15070 300.00';
--------------------------------------------------------------------
$VAR1 = 'DB1: AGI15070 300';

--------------------------------------------------------------------


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
2
3
4
5
6
7
8
9
10
11
====================================================================
$VAR1 = 'DB1: AGI14077 66.28';

$VAR1 = 'DB2: AGI14077 66.28';
$VAR1 = 'DB2: AGI15070 300.00';
--------------------------------------------------------------------
$VAR1 = 'DB1: AGI15070 300';

$VAR1 = 'DB2: AGI14077 66.28';
$VAR1 = 'DB2: AGI15070 300.00';
--------------------------------------------------------------------


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

View full thread Datenbankabfrage durchläuft while nicht vollständig