返回首页

gbase数据、南大通用产品文档:GBase8s

更新日期:2024年09月11日

Character(s) expected
在将 String 值转换为 IntervalDF 或 IntervalYM 对象过程中发生错误。完成转换前遇到 End
of string 。
请参阅 INTERVAL 数据类型 以获取正确的格式。

功能说明
DECLARE 语句用来声明局部变量。
说明

DECLARE 只能被用在BEGIN...END 复合语句之间,
且必须位于其它语句
之前。

游标必须在声明处理器变量之前被声明,并且条件必须在声明游标或处理
器前声明。

局部变量的作用范围在它被声明的BEGIN...END 块之间。
变量可以在嵌套
块中使用,除非在块中声明了同名的变量。
语法格式
DECLARE var_name[,...] type [DEFAULT value]
表5- 173 参数说明

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1349
参数名称


var_name
变量名
type
变量数据类型,值为GBase 8a MPP Cluster 支持的数据类型
DEFAULT value
设置变量的默认值。
这个值可以指定为一个表达式,或一
个常量。如果DEFAULT 缺少子句,初始值为NULL。
示例
示例1:DECLARE intX INT
gbase> DELIMITER //
gbase> DROP PROCEDURE IF EXISTS dodeclare //
Query OK, 0 rows affected
gbase> CREATE PROCEDURE dodeclare (p1 INT)
BEGIN
DECLARE intX INT;
SET intX = 0;
REPEAT SET intX = intX + 1; UNTIL intX > p1 END REPEAT;
SELECT intX;
END //
Query OK, 0 rows affected
gbase> DELIMITER ;
gbase> CALL dodeclare(1000);
+------+
| intX |
+------+
| 1001 |
+------+
1 row in set
Query OK, 0 rows affected
示例2:DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1
gbase> DELIMITER //
gbase> DROP PROCEDURE IF EXISTS curdemo //
Query OK, 0 rows affected
gbase> CREATE PROCEDURE curdemo()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE cnt INT DEFAULT 0;
DECLARE s_region CHAR(255);
DECLARE stmp CHAR(255) DEFAULT '';

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1350
DECLARE cur_region CURSOR FOR SELECT DISTINCT
c_region FROM ssbm.customer ORDER BY c_region LIMIT 1000;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000'
SET done = 1;
DROP TABLE IF EXISTS products;
CREATE TABLE products(region CHAR(255),count INT);
OPEN cur_region;
REPEAT
FETCH cur_region INTO s_region;
IF NOT done THEN
IF
stmp=''
THEN
SET stmp=s_region;
SET cnt=1;
END IF;
IF stmp!=s_region
THEN
INSERT INTO products(region,count)
VALUES(stmp,cnt);
SET cnt=1;
SET stmp=s_region;
END IF;
SET cnt=cnt+1;
END IF;
UNTIL done END REPEAT;
CLOSE cur_region;
INSERT INTO products(region,count) VALUES(stmp,cnt);
END //
Query OK, 0 rows affected
gbase> DELIMITER ;
gbase> CALL curdemo;
Query OK, 1 row affected
gbase> SELECT region,count FROM products;
+-----------------------------------------------------------+-------+
|region
|count|
+-----------------------------------------------------------+-------+
|AFRICA
|
2 |
|AMERICA
|
2 |
|ASIA
|
2 |
|EUROPE
|
2 |
|MIDDLEEAST
|
2 |
+------------------------------------------------------------+-------+
5 rows in set

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1351

nodedatamap
表 5-96 具体信息如下:
hashkey
哈希键值。范围0~65535
nodeid
表分片id。从0 开始,与分片一一对应关系。可以通过gcadmin
showdistribution 查看segment id。这里的nodeid = segment id - 1
在数据计算哈希时,首先通过哈希计算公式(crc32() %65536)计算出哈希键值。
然后,
从gbase.nodedatamap 中查到对应的nodeid。
最后,
在GCWare 存储的节点信
息中,
查找对应的数据分片信息,
查找的时候nodeid 为节点在GCWare 中存储的顺
序。