更新日期:2024年09月11日
标准 GBase 8s SQL 数据类型有对应的 GBase 8s ODBC Driver 数据类型。
下表罗列标准 GBase 8s SQL 数据类型及其对应的 GBase 8s ODBC Driver 数据类型。
GBase 8s SQL 数据类
型
GBase 8s ODBC 驱动程序 SQL
数据类型(fSqlType)
描述
BIGINT
SQL_INFX_BIGINT
精度 10、小数位数 0、取值范
围 n 的有符号数值值
(–(263 - 1) ≤ n ≤ 263 – 1)
BIGSERIAL
SQL_INFX_BIGINT
最大为 (263 – 1) 的连续正整
数
BOOLEAN
SQL_BIT
't' 或 'f'
BYTE
SQL_LONGVARBINARY
变长的二进制数据
CHAR(n)、
CHARACTER(n)
SQL_CHAR
定长 n
(1 ≤ n ≤ 32,767) 的字符串
CHARACTER
VARYING(m, r)
SQL_VARCHAR
变长字符串,最大长度 m (1 ≤
m ≤ 255),最小保留空间量 r
(0 ≤ r < m)
DATE
SQL_DATE
日历日期
DATETIME
SQL_TIMESTAMP
日历日期和当日时刻
DEC(p,s)、
DECIMAL(p, s)
SQL_DECIMAL
带符号的数值值,精度 p,小数
位数 s:
(1 ≤ p ≤ 32; 0 ≤ s ≤ p)
重要:
如果使用小数位数值 > 14,
则可能导致取整不一致。
当 DECIMAL 列包含浮点
数据时,GBase 8s ODBC 报
告该列的小数位数为 255。
这与定点数据不同,其最大
小数位数为 32。DataDirect
ODBC Driver 始终返回小数
位数零。
DOUBLE PRECISION SQL_DOUBLE
带符号的数值值,与标准 C
GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 50 -
GBase 8s SQL 数据类
型
GBase 8s ODBC 驱动程序 SQL
数据类型(fSqlType)
描述
double 数据类型的特征相同
FLOAT
SQL_DOUBLE
带符号数值值,
其特征与标准 C
double 数据类型相同
IDSSECURITYLABEL
内建的 DISTINCT OF
VARCHAR(128) 数据类型;仅
限于基于标签的访问控制使用。
INT、INTEGER
SQL_INTEGER
带符号的数值值,精度 10,小
数位数 0,取值范围 n
(-2,147,483,647 ≤ n ≤
2,147,483,647)
INT8
SQL_BIGINT
带符号的数值值,精度 10,小
数位数 0,取值范围 n
(–(263 - 1) ≤ n ≤ 263 – 1)
INTERVAL
MONTH(p)
SQL_INTERVAL_MONTH
两个日期之间的月数;
p 为间隔
前导精度。
INTERVAL YEAR(p)
SQL_INTERVAL_YEAR
两个日期之间的年和月数;
p 是
间隔前导精度。
INTERVAL YEAR(p)
TO MONTH
SQL_INTERVAL_YEAR_TO_M
ONTH
两个日期之间的年和月数;
p 是
间隔前导精度。
INTERVAL DAY(p)
SQL_INTERVAL_DAY
两个日期之间的天数;
p 是间隔
前导精度。
INTERVAL HOUR(p)
SQL_INTERVAL_HOUR
两个日期时刻之间的小时数;p
是间隔前导精度。
INTERVAL
MINUTE(p)
SQL_INTERVAL_MINUTE
两个日期/时刻之间的分钟数;p
是间隔前导精度。
INTERVAL
SECOND(p,q)
SQL_INTERVAL_SECOND
两个日期/时刻之间的秒数;
p 是
间隔前导精度,
q 是间隔第二精
度。
INTERVAL DAY(p)
TO HOUR
SQL_INTERVAL_DAY_TO_HO
UR
两个日期/时刻之间的天/小时
数;p 是间隔前导精度。
INTERVAL DAY(p)
TO MINUTE
SQL_INTERVAL_DAY_TO_MI
NUTE
两个日期/时刻之间的天/小时/
分钟数;p 是间隔前导精度。
INTERVAL DAY(p)
TO SECOND(q)
SQL_INTERVAL_DAY_TO_SE
COND
两个日期/时刻之间的天/小时/
分钟/秒数;p 是间隔前导精度,
q 是间隔第二精度。
INTERVAL HOUR (p)
TO MINUTE
SQL_INTERVAL_HOUR_TO_M
INUTE
两个日期/时刻之间的小时/分钟
数;p 是间隔前导精度。
INTERVAL HOUR(p)
TO SECOND(q)
SQL_INTERVAL_HOUR_TO_S
ECOND
两个日期/时刻之间的小时/分钟
/秒数;p是间隔前导精度,q 是
GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 51 -
GBase 8s SQL 数据类
型
GBase 8s ODBC 驱动程序 SQL
数据类型(fSqlType)
描述
间隔第二精度。
INTERVAL
MINUTE(p) TO
SECOND(q)
SQL_INTERVAL_MINUTE_TO_
SECOND
两个日期/时刻之间的分钟/秒
数;p 是间隔前导精度,q 是间
隔第二精度。
LVARCHAR
SQL_VARCHAR
变长字符串,长度为 l
(255 ≤ l ≤ 32,000)
MONEY(p, s)
SQL_DECIMAL
带符号的数值值,精度 p,小数
位数 s
(1 ≤ p ≤ 32; 0 ≤ s ≤ p)
NUMERIC
SQL_NUMERIC
带符号的精确数值值,精度 p,
小数位数 s
(1 ≤ p ≤ 15; 0 ≤ s ≤ p)
REAL
SQL_REAL
带符号的数值值,与标准 C
float 数据类型有相同的特征
SERIAL
SQL_INTEGER
连续的 INTEGER
SERIAL8
SQL_BIGINT
连续的 INT8
SMALLFLOAT
SQL_REAL
带符号的数值值,与标准 C
float 数据类型有相同的特征
SMALLINT
SQL_SMALLINT
带符号的数值值,精度 5,小数
位数 0,取值范围 n
(–32,767 ≤ n ≤ 32,767)
TEXT
SQL_LONGVARCHAR
变长字符串
VARCHAR(m, r)
SQL_VARCHAR
变长字符串,最大长度 m (1 ≤
m ≤ 255),最小保留空间量 r
(0 ≤ r < m)
Visual Basic 客户机侧游标
当您使用 Visual Basic 客户机侧游标来执行与使用 CHAR 或 LVARCHAR 列有关的
rowset 更新操作时,
若这些列长度大于或等于 16,385,
GBase 8s ODBC Driver 可能返回错
误。
当长度大于或等于 16,385 时,
Visual Basic 将该 SQL 数据类型发送至 SQLBindParameter,
作为 SQL_LONGVARCHAR 而不是 SQL_VARCHAR。GBase 8s ODBC Driver 将
SQL_LONGVARCHAR 映射为 TEXT 数据类型。因此,应用程序可能看到错误:
[GBase 8s][GBase 8s ODBC Driver]No cast from text to lvarchar
或
GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 52 -
[GBase 8s][GBase 8s ODBC Driver]Illegal attempt to use Text/Byte host variable.
使用 DBBLOBBUF 环境变量,可以控制在 UNLOAD 语句处理 TEXT 或 BYTE 值时,这些
值是临时存储在内存中还是存储在文件中。DBBLOBBUF 仅影响 UNLOAD 语句。
size 表示 TEXT 或 BYTE 数据的最大大小 (KB)。
如果 TEXT 或 BYTE 数据大小小于缺省值 10
KB
(或 DBBLOBBUF 的设置)
,
那么 TEXT
或 BYTE 值临时存储在内存中。如果数据大小大于缺省值或 DBBLOBBUF 设置,那么会将该
数据值写入临时文件。例如,要将缓冲区大小设置为 15 KB,请按以下示例所示设置
DBBLOBBUF:
setenv DBBLOBBUF 15
此处小于 15 KB 的任何 TEXT 或 BYTE 值都将临时存储在内存中。
大于 15 KB 的
值临时存储在文件中。