Data type attributes

Information is shown for the following data type attributes:

Precision

The precision of a numeric column or parameter refers to the maximum number of digits used by the data type of the column or parameter. The precision of a non-numeric column or parameter generally refers to the maximum length or the defined length of the column or parameter. The following table defines the precision for each SQL data type.

ǥ 21. Precision

fSqlType Precision
SQL_CHAR
SQL_VARCHAR
The defined length of the column or parameter. For example, the precision of a column defined as CHAR(10) is 10.
SQL_DECIMAL The defined maximum number of digits. For example, the precision of a column defined as DECIMAL(10,3) is 10.
SQL_SMALLINT a 5
SQL_INTEGER a 10
SQL_BLOB The defined length of the column or parameter. For example, the precision of a column defined as BLOB(10), is 10.
SQL_DATE a 10 (the number of characters in the yyyy-mm-dd format).
SQL_TIME a 8 (the number of characters in the hh:mm:ss format).
SQL_TIMESTAMP 26 (The number of characters in the "yyyy-mm-dd-hh.mm.ss.ffffff" format used by the TIMESTAMP data type.)

a: The cbParamDef argument of SQLBindParameter() is ignored for this data type.

Scale

The scale of a numeric column or parameter refers to the maximum number of digits to the right of the decimal point. The following table defines the scale for each SQL data type.

ǥ 22. Scale

fSqlType Scale
SQL_CHAR
SQL_VARCHAR
Not applicable.
SQL_DECIMAL The defined number of digits to the right of the decimal place. For example, the scale of a column defined as DECIMAL(10, 3) is 3.
SQL_SMALLINT
SQL_INTEGER
0
SQL_BLOB Not applicable.
SQL_DATE
SQL_TIME
Not applicable.
SQL_TIMESTAMP 6 (The number of digits to the right of the decimal point in the "yyyy-mm-dd-hh.mm.ss.ffffff" format.)

Length

The length of a column is the maximum number of bytes returned to the application when data is transferred to its default C data type. For character data, the length does not include the null termination byte. Note that the length of a column may be different than the number of bytes required to store the data on the data source.

The following table defines the length for each SQL data type.

ǥ 23. Length

fSqlType Length
SQL_CHAR
SQL_VARCHAR
The defined length of the column. For example, the length of a column defined as CHAR(10) is 10.
SQL_DECIMAL The maximum number of digits plus two. Since these data types are returned as character strings, characters are needed for the digits, a sign, and a decimal point. For example, the length of a column defined as DECIMAL(10,3) is 12.
SQL_SMALLINT 2 (two bytes).
SQL_INTEGER 4 (four bytes).
SQL_BLOB The defined length of the column. For example, the length of a column defined as BLOB(10) is 10.
SQL_DATE
SQL_TIME
6 (the size of the DATE_STRUCT or TIME_STRUCT structure).
SQL_TIMESTAMP 16 (the size of the TIMESTAMP_STRUCT structure).

Display size

The display size of a column is the maximum number of bytes needed to display data in character form. The following table defines the display size for each SQL data type.

ǥ 24. Display size

fSqlType Display size
SQL_CHAR
SQL_VARCHAR
The defined length of the column. For example, the display size of a column defined as CHAR(10) is 10.
SQL_DECIMAL The precision of the column plus two (a sign, precision digits, and a decimal point). For example, the display size of a column defined as DECIMAL(10,3) is 12.
SQL_SMALLINT 6 (a sign and 5 digits).
SQL_INTEGER 11 (a sign and 10 digits).
SQL_BLOB The defined length of the column times 2 (each binary byte is represented by a 2 digit hexadecimal number). For example, the display size of a column defined as BLOB(10) is 20.
SQL_DATE 10 (a date in the format yyyy-mm-dd).
SQL_TIME 8 (a time in the format hh:mm:ss).
SQL_TIMESTAMP 26 (a timestamp in the format yyyy-mm-dd-hh.mm.ss.ffffff).