[DB-SIG] Result from DCOracle2 different from sqlplus
Matthew T. Kromer
matt@zope.com
Thu, 15 Nov 2001 08:35:32 -0500
Titu Kim wrote:
>Hi,
> I am confused when retrieve data from database using
>same query. For instance, my query is "SELECT emp_id
>FROM EMPLOYEE" and data type of emp_id is NUMBER. If i
>execute this query using DCOracle2 in python, i get id
>number with 1 decimal number like, [[1.0],[14.0]].
>However, if i run the same query in sqlplus, i get the
>same result without any decimal point. Why can this
>happen? Any idea?
>
>Regards,
>Kim Titu
>
Hi Kim,
DCOracle2 takes a look at the scale and precision of the number -- by
default, NUMBERs with no scale or precision (which sometimes Oracle
represents internally as maximum precision) can contain both floating
point values and integers. When converting a column to a python type,
DCOracle2 doesn't want to have two different result types in the same
column, so if the column COULD contain a floating point, the whole
column is represented as floating point.
To force the column type to be integer only, you can declare it as
NUMBER(9) -- anything larger than this would indicate the possibility of
a Long integer being returned.