michaelkbs
Goto Top

Wieso liefert ein Perl-Datenbankzugriff auf YARD-Datenbank keine Fließkommazahlen?

Hi,
in Perl bin ich leider ziemlicher Anfänger, trotzdem habe ich ein Programm zum Laufen bekommen, das Daten aus einer Datenbank in einem Formular darstellt. Wenn da nur nicht die Fließkommazahlen wären. Statt derer bekomme ich nur Murks.

Eigentlich eine Allerweltsaufgabe:
Einen Datensatz aus der Datenbank holen und den Inhalt in ein Formular schreiben:

#!/usr/bin/perl -w
use CGI;
use DBI;
$dbh = DBI->connect('DBI:YARD:xxx','xxxx','xxxx');
  1. $type_info_all = $dbh->type_info_all;
$sth = $dbh->do('database xxx);

#Dann
$sth->bind_col(1, \$col1, {TYPE => SQL_INTEGER});
$sth->bind_col(14, \$col14, {TYPE => SQL_DOUBLE});
$sth->fetch;

#Oder auch
@row_ary=$sth->fetchrow_array();
$col14=$row_ary[14];

Bei beiden Varianten (und noch ein paar weiteren) kriege ich bei Ganzzahlen und Strings korrekte Ergebnisse. Bei Fließkommazahlen (double) kriege ich aber falsche Zahlen, und zwar konsequent immer die selbe (egal welches Feld oder welcher Datensatz).

Nach frischem Aufsetzen auf einem Testrechner dachte ich erst "hurra", aber dann kam die Ernüchterung: Hier war die Zahl immer 0,0.

Verwendet wird aus Kompatibilitätsgründen YARDSQL 4.

Bevor ich die Ochsentour fahre und die jeweils gewünschten Daten von einem C-Programm in eine Datei quetschen lasse: Habt ihr eine Idee, woran es liegen könnte?

Danke im Voraus und Gruß
MichaelKBS

Content-Key: 170616

Url: https://administrator.de/contentid/170616

Printed on: April 19, 2024 at 10:04 o'clock

Member: MichaelKBS
MichaelKBS Aug 05, 2011 at 08:41:30 (UTC)
Goto Top
Nach etlichen Versuchen mit verschiedensten Varianten gehe ich davon aus, dass der Datenbanktreiber schlicht die Daten nicht so liefert, wie Perl sie braucht.
Also Workaround habe ich ein C-Programm dazwischengeschaltet. Deshalb jetzt als gelöst markiert.