NUMERIC and DECIMAL Data Types

From InterBase

Go Up to Understanding the XSQLDA (Embedded SQL Guide)


DECIMAL and NUMERIC data types are stored internally as SMALLINT, INTEGER, DOUBLE PRECISION, or 64-bit integer data types, depending on the precision and scale defined for a column definition that uses these types. To determine how a DECIMAL or NUMERIC value is actually stored in the database, use isql to examine the column definition in the table. If NUMERIC is reported, then data is actually being stored as a 64-bit integer.

When a DECIMAL or NUMERIC value is stored as a SMALLINT or INTEGER, the value is stored as a whole number. During retrieval in DSQL, the sqlscale field of the XSQLVAR is set to a negative number that indicates the factor of ten by which the whole number (returned in sqldata), must be divided in order to produce the correct NUMERIC or DECIMAL value with its fractional part. If ­sqlscale is –1, then the number must be divided by 10, if it is –2, then the number must be divided by 100, –3 by 1,000, and so forth.

Advance To: