返回首页

gbase数据、南大通用产品文档:GBase8sSQLColAttributes (仅限核心级别)

更新日期:2024年09月11日

SQLColAttributes 返回结果集章列的描述符消息。
它不能用于返回标记列的信息(列 0)。描述符消息作为字符串,32 位描述符相关值或整
数值返回。
下表描述了 SQLColAttributes 的 SQLSTATE 和错误值。
SQLSTATE
错误值
错误消息
01000
-11001
General warning
01004
-11003
Data truncated
24000
-11031
Invalid cursor state
S1000
-11060
General error
S1001
-11061
Memory-allocation failure
S1002
-11062
Invalid column number
S1008
-11065
Operation canceled
S1010
-11067
Function-sequence error
S1090
-11071
Invalid string or buffer length
S1091
-11072
Descriptor type out of range

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 214 -

SQLSTATE
错误值
错误消息
S1C00
-11092
Driver not capable
S1T00
-11094
Time-out expired
SQLColAttributes 可以返回 SQLPrepare 或 SQLExecute 在 SQLPrepare 之后,
SQLExecute 之前调用的任何 SQLSTATE。具体取决于数据源何时评估与 hstmt 关联的
SQL 语句。

GBase UP 支持数据类型包括严格的数值数据类型(TINYINT,SMALLINT,INT,
BIGINT,DECIMAL),以及近似的数值数据类型(FLOAT,DOUBLE)。
为了更有效地使用存储空间,请用户尽量使用最精确的类型。例如,如果一个整数
列被用于在1~127 之间的值,TINYINT 是最好的类型。
为了存储更大范围的数值,用户可以选择BIGINT 或DECIMAL 类型。
作为SQL92 标准的扩展,GBase UP 也支持整数类型TINYINT,SMALLINT 和
BIGINT。
GBase UP 支持的数值类型,如下表所示:
表 5-114 保留字
类型名称
最小值
最大值
占用字节数
TINYINT
-127
127
1
SMALLINT
-32767
32767
2
INT(INTEGER)
-2147483647
2147483647
4
BIGINT
-9223372036854775806
922337203685477580
6
8
FLOAT
-3.40E+38

跨引擎SELECT 允许在一条SELECT 语句中,
使用不同引擎的表进行关联查询、

条件查询等,
其语法遵循GBase8a 引擎的SELECT 语法,
本章仅对引入HIVE 引擎
后,新增的语法,以及由于跨引擎查询而消减的语法进行说明。如下是几个跨引擎
SELECT 的示例。
示例中用到的表及数据:
CREATE TABLE h1(a INT, b INT, c INT) ENGINE='HIVE';
CREATE TABLE t1(a INT, b INT, c INT) ENGINE='EXPRESS';

INSERT INTO h1 VALUES(1, 2, 1), (2, 3, 2), (3, 3, 3);
INSERT INTO t1 VALUES(1, 2, 1), (2, 3, 2), (4, 3, 3);
示例:跨引擎SELECT 示例,跨引擎JOIN:
gbase> SELECT t1.b, h1.c FROM t1, h1 WHERE t1.a = h1.a;
+------+------+
| b | c |
+------+------+
| 3 | 2 |
| 2 | 1 |
+------+------+
2 rows in set
示例:跨引擎SELECT 示例,跨引擎条件:
gbase> SELECT t1.c FROM t1 WHERE t1.a in (SELECT a from h1 WHERE h1.b > 1);
+------+
| c |
+------+
| 1 |

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 780
| 3 |
+------+
2 rows in set

gbase> SELECT h1.c FROM h1 WHERE h1.a in (SELECT a from t1 WHERE t1.b > 1);
+------+
| c |
+------+
| 2 |
| 1 |
+------+
2 rows in set