检查 LIST 集合的基数
有时,您可能想要将元素添加在 LIST 的末尾。在此情况下,您可使用 cardinality() 函数来 找到 LIST 中的元素的编号,然后输入一个大于cardinality() 返回的值的位置。 GBase 8s 允许您随同存储在列中的集合来使用 cardinality() 函数,但不允许随同存储在集合 变量中的集合来使用。在 SPL 例程中,您可以 SELECT 语句检查列中的集合的基数,并 将该值返回给变量。
假设在 numbers 表中,其 id 列为 99 的那一行的 evens 列仍然包含集合 LIST {2,4,6,8,10}。 这一次,您想要将元素 12 添加在该 LIST 的末尾。您可使用 SPL 过程 end_of_list 实现, 如下图所示。
图: end_of_list SPL 过程。
CREATE PROCEDURE end_of_list() DEFINE n SMALLINT; DEFINE list_var LIST(INTEGER NOT NULL); SELECT CARDINALITY(evens) FROM numbers INTO n WHERE id = 100; LET n = n + 1; SELECT evens INTO list_var FROM numbers WHERE id = 100; INSERT AT n INTO TABLE(list_var) VALUES(12); END PROCEDURE;
在 end_of_list 中,变量 n 保存 cardinality() 返回的值,即,LIST 中的项数。LET 语句使 n 递 增,以便于 INSERT 语句可在 LIST 的最后的位置插入值。SELECT 语句将来自该表的一 行的集合选择至集合变量 list_var 内。INSERT 语句将元素 12 插入在该列表的结尾。




