Servus,
unsere Warenwirtschaft verwendet eine Sybase-Datenbank. Auf diese Datenbank habe ich per ODBC Lesezugriff.
Mit nachstehendem Code lese ich (hier verkürzt) Artikelstammdaten aus.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use strict;
use warnings;
use DBI;
my $dbs_user = 'ODBCLX';
my $dbs_pw = 'xxxxxxx';
my ($dbs, $dbs_result, $statement);
$dbs = DBI->connect('DBI:ODBC:LXSYDSN',$dbs_user,$dbs_pw) or die "Couldn't connect to database:" . DBI->errstr;
my ($artikel_nr, $bezeichnung, $beschreibung, $bestand) = undef;
$statement = "SELECT ArtikelNr, Menge_bestand, Bezeichnung FROM IQF3.FK_Artikel WHERE ArtikelNr = 'AGI01090'";
$dbs_result = $dbs->prepare ( qq {$statement} );
$dbs_result->execute();
while (($artikel_nr, $bestand, $bezeichnung, $beschreibung) = $dbs_result->fetchrow_array()) {
print "\$artikel_nr\t: $artikel_nr\n";
print "\$bestand\t\t: $bestand\n";
print "\$bezeichnung\t: $bezeichnung\n";
print "\$beschreibung\t: ";
if (defined $beschreibung) {
print "$beschreibung";
}
print "\n";
}
Die Ausgabe sieht so aus:
$artikel_nr : AGI01090
$bestand : 57
$bezeichnung : Poster A1-PremiumMandate
$beschreibung :
Wenn ich nun in Zeile 19 das Feld 'Beschreibung' in der Quelle ergänze:
$statement = "SELECT ArtikelNr, Menge_bestand, Bezeichnung, Beschreibung FROM IQF3.FK_Artikel WHERE ArtikelNr = 'AGI01090'";
erhalte ich folgende Fehlermeldung:
DBD::ODBC::st fetchrow_array failed: [Sybase][ODBC Driver]Ung³ltige Zeichenfolgen- oder Pufferlõnge (SQL-HY090) at C:\...\test-memo.pl line 26.
Mir ist aufgefallen, dass das Feld 'Beschreibung' in der Quelle als Feldtyp=Memo definiert ist, alle anderen Felder als Feldtyp=Text.
Wie kann ich das Memofeld einlesen?
Viele Grüße Stefan 25.08.16
Last edited: 2016-11-24 16:02:35 +0100 (CET)