返回首页

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

更新日期:2024年09月11日

创建表时指定压缩属性
语法格式
CREATE [TEMPORARY] TABLE [IF NOT EXISTS]
[vc_name.][database_name.]table_name
(column_definition [ , column_definition],
... [,
key_options])
COMPRESS (<’method’>,);
表5- 81 参数说明
参数名称


method
指定压缩算法,
不设置时show variables 显示
“NO Setting”

压缩方式取值:

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



Nozip:没有压缩

HighZ:高压缩比

RapidZ:快速压缩

NewRapidZ:

STDZ:
压缩方式中的字符串不区分大小写
level
指定压缩级别,0~9,1 压缩比最低,压缩/解压缩速度最快,
9 反之。不设置时show variables 显示为0。默认级别为0,
针对不通的原型算法有不通的选取。
示例
示例1:使用压缩表语法定义表:
gbase> CREATE TABLE t1 (a int, b varchar(10)) COMPRESS('rapidz',5);
Query OK, 0 rows affected (Elapsed: 00:00:00.12)
gbase> SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE "t1" (
"a" int(11) DEFAULT NULL,
"b" varchar(10) DEFAULT NULL
) COMPRESS('RapidZ', 5)
ENGINE=EXPRESS DEFAULT CHARSET=utf8
TABLESPACE='sys_tablespace'
1 row in set (Elapsed: 00:00:00.00)

硬件配置
服务器
CPU
内存
硬盘
网络信息


GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 328 -

您可使用 RAISE EXCEPTION 语句生成您自己的错误,如下图所示。
图: RAISE EXCEPTION 语句。
BEGIN
ON EXCEPTION SET esql, eisam -- 捕获所有错误
IF esql = -206 THEN -- 未找到表
-- 某种恢复
ELSE
RAISE exception esql, eisam; -- 放过该错误
END IF
END EXCEPTION
-- 执行某操作
END
在该示例中,ON EXCEPTION 语句使用两个变量 esql 和 eisam,来保存数据库服务器返回
的错误编号。如果发生错误且如果 SQL 错误编号为 -206,则执行 IF 子句。如果捕获任
何其他 SQL 错误,则将它从此 BEGINEND 块传至前面的示例的最后 BEGINEND 块。

模拟 SQL 错误
您可产生错误来模拟 SQL 错误,如下图所示。如果用户为 pault, 则 SPL 运行如同那个
用户没有 update 权限一样,即使该用户实际确实拥有那个权限。
图: 模拟 SQL 错误。
BEGIN
IF user = 'pault' THEN
RAISE EXCEPTION -273; -- 拒绝 Paul 的 update 权限
END IF
END

使用 RAISE EXCEPTION 来退出嵌套的代码
下图展示您可如何使用 RAISE EXCEPTION 语句来退出深度嵌套的块。
图: RAISE EXCEPTION 语句。
BEGIN
ON EXCEPTION IN (1)
END EXCEPTION WITH RESUME -- do nothing significant (cont)

BEGIN

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 329 -

FOR i IN (1 TO 1000)
FOREACH select ..INTO aa FROM t
IF aa < 0 THEN
RAISE EXCEPTION 1; -- emergency exit
END IF
END FOREACH
END FOR
RETURN 1;
END

--do something; -- emergency exit to
-- this statement.
TRACE 'Negative value returned';
RETURN -10;
END
如果最内层的条件为真(如果 aa 为负),则发生异常,且执行跳至跟在该块的 END 之后
的代码。在此情况下,执行跳至 TRACE 语句。
请记住,BEGINEND 块为单个语句。如果在块中的某处发生错误,且在该块之外捕获,则
当执行恢复时,跳过该块剩余的部分,并从下一语句开始执行。
除非您在该块的某处为此错误设置捕获,否则,将错误条件传回至包含该调用的块,并传
回至包含该块的任何块。如果不存在设置处理该错误的 ON EXCEPTION 语句,则停止该
SPL 例程的执行,为正在执行该 SPL 例程的例程创建一个错误。