Precision of Numeric Data Types

The following OLE DB data types are used to represent numeric values. Each type has a corresponding maximum precision value that indicates the maximum number of base 10 digits that it can store. The radix of the precision for all numeric types is 10.

The maximum precision returned by the provider in the COLUMN_SIZE column of the PROVIDER_TYPES schema rowset is the maximum possible precision for the data type that is supported by the data store. For example, if a data store can support a maximum precision of only 28 for a DBTYPE_NUMERIC column, the provider returns 28, not 38, as the maximum precision.

Note

Only the following data types have a range of scale values:

  • DBTYPE_DECIMAL 0 to 28

  • DBTYPE_NUMERIC 0 to 38

  • DBTYPE_VARNUMERIC -128 to 127

Although generally invalid, the meaning of a precision value of 0 is provider-specific.

Type indicator

Maximum precision

DBTYPE_I1

3

DBTYPE_I2

5

DBTYPE_I4

10

DBTYPE_I8

19

DBTYPE_UI1

3

DBTYPE_UI2

5

DBTYPE_UI4

10

DBTYPE_UI8

20

DBTYPE_R4

7

DBTYPE_R8

15

DBTYPE_CY

19

DBTYPE_DECIMAL

29

DBTYPE_NUMERIC

38

DBTYPE_VARNUMERIC

255