数据类型属性

显示有关下列数据类型属性的信息:

精度

数字列或参数的精度指的是列或参数的数据类型使用的最大位数。非数字列或参数的精度通常是指列或参数的最大长度或定义长度。下表定义每个 SQL 数据类型的精度。

表 21. 精度

fSqlType 精度
SQL_CHAR
SQL_VARCHAR
列或参数的定义长度。例如,定义为 CHAR(10) 的列的精度为 10。
SQL_DECIMAL 定义的最大位数。例如,定义为 DECIMAL(10,3) 的列的精度为 10。
SQL_SMALLINT a 5
SQL_INTEGER a 10
SQL_BLOB 列或参数的定义长度。例如,定义为 BLOB(10) 的列的精度为 10。
SQL_DATE a 10(yyyy-mm-dd 格式中的字符数)。
SQL_TIME a 8(hh:mm:ss 格式中的字符数)。
SQL_TIMESTAMP 26(TIMESTAMP 数据类型使用的“yyyy-mm-dd-hh.mm.ss.ffffff”格式中的字符数。)

a:对于此数据类型,将忽略 SQLBindParameter()cbParamDef 自变量。

小数位

数字列或参数的小数位指的是小数点右边的最大位数。下表定义每种 SQL 数据类型的小数位。

表 22. 小数位

fSqlType 小数位
SQL_CHAR
SQL_VARCHAR
不适用。
SQL_DECIMAL 小数点位置右边的定义位数。例如,定义为 DECIMAL(10, 3) 的列的小数位为 3。
SQL_SMALLINT
SQL_INTEGER
0
SQL_BLOB 不适用。
SQL_DATE
SQL_TIME
不适用。
SQL_TIMESTAMP 6(“yyyy-mm-dd-hh.mm.ss.ffffff”格式中的小数点右边的位数。)

长度

列的长度是将数据转换至其缺省 C 数据类型时返回至应用程序的最大字节数。对于字符数据, 该长度不包括 null 终止字节。注意,列的长度可能与在数据源上存储数据所需的字节数不同。

下表定义每种 SQL 数据类型的长度。

表 23. 长度

fSqlType 长度
SQL_CHAR
SQL_VARCHAR
列的定义长度。例如,定义为 CHAR(10) 的列的长度为 10。
SQL_DECIMAL 最大数字是位数加上二。因为这些数据类型是作为字符串返回的, 所以需要附加字符来表示附加位数(符号和小数点)。例如,定义为 DECIMAL(10,3) 的列的长度为 12。
SQL_SMALLINT 2(2 字节)。
SQL_INTEGER 4(4 字节)。
SQL_BLOB 列的定义长度。例如,定义为 BLOB(10) 的列的长度为 10。
SQL_DATE
SQL_TIME
6(DATE_STRUCT 或 TIME_STRUCT 结构的大小)。
SQL_TIMESTAMP 16(TIMESTAMP_STRUCT 结构的大小)。

显示大小

列的显示大小是以字符形式显示数据所需的最大字节数。下表定义每种 SQL 数据类型的显示大小。

表 24. 显示大小

fSqlType 显示大小
SQL_CHAR
SQL_VARCHAR
列的定义长度。例如,定义为 CHAR(10) 的列的显示大小为 10。
SQL_DECIMAL 列的精度加上二(表示精度位的符号和小数点)。例如,定义为 DECIMAL(10,3) 的列的显示大小为 12。
SQL_SMALLINT 6(一个符号加上 5 位)。
SQL_INTEGER 11(一个符号加上 10 位)。
SQL_BLOB 列的定义长度乘以 2(每个二进制字节用 2 位十六进制数字表示)。例如,定义为 BLOB(10) 的列的显示大小为 20。
SQL_DATE 10(格式为 yyyy-mm-dd 的日期)。
SQL_TIME 8(格式为 hh:mm:ss 的时间)。
SQL_TIMESTAMP 26(格式为 yyyy-mm-dd-hh.mm.ss.ffffff 的时间戳记)。