返回首页

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

更新日期:2024年09月11日

使用 IF 语句在 SPL 例程中创建逻辑分支。
语法

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1219

用法
数据库服务器按下列步骤处理 IF 语句:
1. 如果 IF 关键字之后的条件为真,则执行 IF 语句的第一个 THEN 关键
字之后的任何语句,并且 IF 语句终止。
2. 如果初始 IF 语句条件的结果为假,当存在 ELIF 子句,则数据库服务器
将计算 ELIF 关键字之后的条件。
3. 如果 ELIF 条件的结果为真,则执行 ELIF 语句的 THEN 关键字后的任
何语句,并且 IF 语句终止。
4. 如果第一个 ELIF 子句中的条件的结果也为假,则数据库服务器会计算下
一个 ELIF 子句的条件,如果它为真,则继续执行上一个步骤。如果为
假,数据库服务器将计算连续 ELIF 子句中的条件,直到找到一个条件为
真,在这种情况下,它会执行该 ELIF 子句中的 THEN 关键字后面的语
句列表,然后 IF 语句终止。
5. 如果 IF 语句中没有条件为真,但存在 ELSE 子句,则执行 ELSE 关键
字之后的语句,并且 IF 语句终止。
6. 如果 IF 语句中的条件都不为真,且不存在 ELSE 子句,则 IF 语句终
止,而不执行任何语句列表。
ELIF 子句
使用 ELIF 子句指定一个或多个附加条件以计算值。如果 IF 条件为假,则计算
ELIF 条件的值。如果 ELIF 条件为真,则执行 ELIF 子句中跟随 THEN 关键字
之后的子句。
如果当 ELIF 条件为真时 ELIF 子句的 THEN 关键字之后没有语句,则程序将
控制从 IF 语句传递给下一条语句。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1220
ELSE 子句
如果没有为真的上一级统计存在于 IF 子句或任何 ELIF 子句,则执行 ELSE 子
句。
在以下示例中,SPL 函数使用具有 ELIF 子句和 ELSE 子句的 IF 语句。IF 语
句比较两个字符串。
函数显示 1 来指示第一个字符串按字母顺序出现在第二个字符串前面,或则当前
第一个字符串按字母顺序出现在第二个字符串后面时,则显示 -1 。如果字符串
都相同,则返回量(0)。
CREATE FUNCTION str_compare (str1 CHAR(20), str2 CHAR(20))
RETURNING INT;
DEFINE result INT;
IF str1 > str2 THEN LET result =1;
ELIF str2 > str1 THEN LET result = -1;
ELSE LET result = 0;
END IF
RETURN result;
END FUNCTION -- str_compare
IF 语句中的条件
如同在 WHILE 语句中,如果 condition 中的任何表达式求值为 NULL,则条
件不能为真,除非您正在使用 IS NULL 运算符对 NULL 显式地进行测试。以下
规则总结了条件中的 NULL 值:
1. 如果表达式 x 求值为 NULL,则按照定义,x 不为真。而且,NOT (x)
也不为真。
2. IS NULL 是可使 x 恢复为真的唯一运算符。即 x IS NULL 为真,x IS
NOT NULL 不为真。
如果条件中的表达式含有来自未初始化的 SPL 变量的 UNKNOWN 值,则语句
终止并出现异常。
可以仅在触发器例程中的 IF 语句中将触发器类型 Boolean 运算符
(DELETING 、INSERTING 、SELECTING 或 UPDATING)作为条件。
IF 语句列表

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1221
IF 语句列表

IF 语句列表中允许的 SPL 语句的子集
您可以在 IF 语句列表中使用以下任何 SPL 语句:

<

功能
这个参数用于设置GBase 8a MPP Cluster 运行中,数据库临时目录路径。该目录
至少需要20G 的空闲空间(依赖于数据库的大小)。
该目录对GBase 8a MPP Cluster 的运行性能影响较大,通常要求该目录被设置在
IO 性能非常高的磁盘分区中。
在GBase 8a MPP Cluster 中,该参数的默认值为:
$GBASE_BASE/tmpdata/cache_$GBASE_SID
用户可以根据实际的硬件情况,修改该参数。

pg_resetxlog 是一个重新设置数据库事务文件的工具。

通过pg_resetxlog 重新设置之前,需要先停止数据库。