Hello Tim and Ravi, first of all Tim is right, but you can easily work around with the format parameter. It seems to me that this is some kind of default value for the format parameter, that has changed. Maybe Oracle 8 is so clever to adopt the default format based on the select column and Oracle 7 was always using the same default format.
SQL> select to_char(1/3) from dual; TO_CHAR(1/3) ---------------------------------------- .333333333333333333333333333333333333333 SQL> select to_char(1/3, '9d9999999999999999999999999999999999999999') from dual; TO_CHAR(1/3,'9D9999999999999999999999999999 ------------------------------------------- .3333333333333333333333333333333333333333 Change you code: my $src_test_value = $src_dbh->selectrow_array("select to_char(CONVERSION_RATE, '9d9999999999999999999999999999999999999999') from $src_schema_name.$src_table_name where FROM_CURRENCY_CODE = 'ZAR' and conversion_date = (select max(conversion_date) from $src_schema_name.$src_table_name where FROM_CURRENCY_CODE = 'ZAR')"); print "src conv rate = $src_test_value\n" That should work. Check my second thesis with Oracle 9: SQL> create table t6 (n number(4,4)); SQL> insert into t6 values (1/3); SQL> select * from t6; N ---------- .3333 Tuesday, September 21, 2004, 10:05:19 PM, you wrote: TB> On Tue, Sep 21, 2004 at 12:30:17PM -0700, Ravi Kongara wrote: >> Again and again i'm getting into the problem of losing precision/scale >> of NUMBER values. >> DBI script selects/displays 39 digits after the decimal point, >> eventhough database has stored 40 digits, cutting off >> last digit while selecting from source. Strangely, it displays all 40 >> digits from target, which is a Oracle 8 database. ... cu Wieland mailto:[EMAIL PROTECTED]