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.
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.
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.
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.
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). |