On 09/12/11 17:44, Alan Humphrey wrote:
Hi all –
I’ve got a MSSQL database being accessed through ODBC. Several of the columns
in the database use a datatype of ‘money’. When I query the database directly
those fields come back with 4 digits of precision.
My problem: by the time the data gets back to me via the resultset the column
data has been rounded to 2 digits of precision.
This problem persists whether or not I specify a data type in the Result
definition.
Any thoughts? Would changing the data type in the MSSQL column definition help?
Thanks!
-Alan
I'm not using dbic but with DBD::ODBC I have no problems getting precision 4
money data back.
isql -v sqlserver sa xxxx
SQL> create table m (a money);
SQLRowCount returns -1
SQL> insert into m values(1.1234);
SQLRowCount returns 1
SQL> insert into m values(2.34567);
SQLRowCount returns 1
SQL> select * from m;
+----------------------+
| a |
+----------------------+
| 1.1234 |
| 2.3457 |
+----------------------+
SQLRowCount returns -1
2 rows fetched
perl -le 'use DBI; my $h = DBI->connect("dbi:ODBC:DSN=sqlserver","sa", "xxx"); my
$r = $h->selectall_arrayref(q/select * from m/); use Data::Dumper;print Dumper($r);'
$VAR1 = [
[
'1.1234'
],
[
'2.3457'
]
];
Of course, it may depend on your ODBC driver. You didn't say which one you are
using.
Martin
--
Martin J. Evans
Easysoft Limited
http://www.easysoft.com
_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/[email protected]