返回首页

gbase数据、南大通用产品文档:GBase8sdistinct 数据类型

更新日期:2024年09月11日

distinct 类型可映射至底层的基础类型或映射至用户定义的 Java™ 对象。例如,distinct 类
型 INT 可映射至 int 或映射至封装该数据表示的 Java 对象。此 Java 对象必须实
现 java.sql.SQLData 接口。必须提供如 映射数据类型 中所描述的定制类型映射,来将此
Java 对象映射至对应的 SQL 类型名称。

标准 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 的
值临时存储在文件中。