Transfer Octet Length
The transfer octet 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 transfer octet length does not include space for the null-termination character. The transfer octet length of a column may be different than the number of bytes required to store the data on the data source.
The transfer octet length defined for each ODBC SQL data type is shown in the following table.
SQL type identifier
All character types[a]
The defined or the maximum (for variable type) length of the column in bytes. This is the same value as the descriptor field SQL_DESC_OCTET_LENGTH.
The number of bytes required to hold the character representation of this data if the character set is ANSI, and twice this number if the character set is UNICODE. This is the maximum number of digits plus two, because the data is returned as a character string and characters are needed for the digits, a sign, and a decimal point. For example, the transfer length of a column defined as NUMERIC(10,3) is 12.
The number of bytes required to hold the character representation of this data if the character set is ANSI, and twice this number if the character set is UNICODE, because this data type is returned as a character string by default. The character representation consists of 20 characters: 19 for digits and a sign, if signed, or 20 digits, if unsigned. Therefore, the length is 20.
All binary types[a]
The number of bytes required to hold the defined (for fixed types) or maximum (for variable types) number of characters.
6 (the size of the SQL_DATE_STRUCT or SQL_TIME_STRUCT structure).
16 (the size of the SQL_TIMESTAMP_STRUCT structure).
All interval data types
34 (the size of the interval structure).
16 (the size of the GUID structure).
[a] If the driver cannot determine the column or parameter length for variable types, it returns SQL_NO_TOTAL.