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-ID: 170616

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

Ausgedruckt am: 22.11.2024 um 20:11 Uhr

MichaelKBS
MichaelKBS 05.08.2011 um 10:41:30 Uhr
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.