更新日期: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.
支持场景
单表查询语句。
多个单表查询的UNION ALL。
物化视图上支持创建索引。
物化视图支持Analyze 操作。
不支持场景
物化视图中不支持多表Join 连接计划以及subquery 计划。
除少部分ALTER 操作外,不支持对物化视图中基表执行绝大多数DDL 操作。
物化视图不支持增删改操作,只支持查询语句。
不支持用临时表/hashbucket/unlog/分区表创建物化视图。
不支持物化视图嵌套创建(即物化视图上创建物化视图)。
仅支持行存表,不支持列存表。
不支持UNLOGGED 类型的物化视图,不支持WITH 语法。
GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1150
约束
物化视图定义如果为UNION ALL,则其中每个子查询需使用不同的基表。
增量物化视图的创建、全量刷新、删除过程中会给基表加高级别锁,
若物化视图的定义
为UNION ALL,需要注意业务逻辑,避免死锁产生。
GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1151
23 GUC 参数说明