下列 SPL 例程使用 IF - ELIF - ELSE 结构来比较该例程接受的两个参数。 图: 比较两个参数的 IF - ELIF - ELSE 结构。 CREATE FUNCTION str_compare( str1 CHAR(20), str2 CHAR(20)) RETURNING INTEGER;
DEFINE result INTEGER;
IF str1 > str2 THEN LET result = 1; ELIF str2 > str1 THEN LET result = -1; ELSE LET result = 0; END IF RETURN result; END FUNCTION; 假设您以下图所示的列定义名为 manager 的表。 图: 定义 manager 表。 CREATE TABLE manager ( mgr_name VARCHAR(30), department VARCHAR(12), dept_no SMALLINT, direct_reports SET( VARCHAR(30) NOT NULL ), projects LIST( ROW ( pro_name VARCHAR(15), pro_members SET( VARCHAR(20) NOT NULL ) )
GBase 8s SQL 指南:教程 南大通用数据技术股份有限公司 - 290 - NOT NULL), salary INTEGER, ); 下列 SPL 例程使用 IF - ELIF - ELSE 结构来检查 direct_reports 列中 SET 中元素的数目, 并基于该结果来调用不同的外部例程。 图: 检查 SET 中元素数的 IF - ELIF - ELSE 结构。 CREATE FUNCTION checklist( d SMALLINT ) RETURNING VARCHAR(30), VARCHAR(12), INTEGER;
DEFINE name VARCHAR(30); DEFINE dept VARCHAR(12); DEFINE num INTEGER;
SELECT mgr_name, department, CARDINALITY(direct_reports) FROM manager INTO name, dept, num WHERE dept_no = d; IF num > 20 THEN EXECUTE FUNCTION add_mgr(dept); ELIF num = 0 THEN EXECUTE FUNCTION del_mgr(dept); ELSE RETURN name, dept, num; END IF;
END FUNCTION; cardinality() 函数计数集合包含的元素数。要获取更多信息,请参阅 基数函数。 SPL 例程中的 IF - ELIF - ELSE 结构有至多下列四个部分: IF THEN 条件 如果跟在 IF 语句之后的该条件为 TRUE,则例程执行 IF 块中的语句。如果该条 件为假,则例程对 ELIF 条件求值。 IF 语句中的表达式可为任何有效的条件, 如 GBase 8s SQL 指南: 语法 的 Condition 段描述的那样。 要了解 IF 语句的完整语法和详细的讨论, 请参阅 《GBase 8s SQL 指 南:语法》。 一个或多个 ELIF 条件(可选的)
GBase 8s SQL 指南:教程 南大通用数据技术股份有限公司 - 291 - 仅当 IF 条件为假时,例程才对 ELIF 条件求值。如果 ELIF 条件为真,则例程执 行 ELIF 块中的语句。如果 ELIF 条件为假,则例程或对下一个 ELIF 块求值,或 执行 ELSE 语句。 ELSE 条件(可选的) 如果 IF 条件和所有 ELIF 条件都为假,则例程执行 ELSE 块中的语句。 END IF 语句 END IF 语句结束该语句块。