| 插入至集合内 / 插入至嵌套的集合内 | |
将 SET 插入至 LIST 内,类似于将单个值插入至简单的集合内。
要将 SET 插入至 LIST 内,请声明集合变量来保存该 LIST,并将整个集合选择至它内。当您使用集合变量作为集合派生的表时,该 LIST 中的每一 SET 成为该表的一行。然后,您可将另一 SET 插入在该 LIST 的末尾或插入在指定的点。
图: 样例 LIST。
LIST( SET{3,5}, SET{5,7}, SET{11,13} )
图: 将 LIST 视为集合派生的表。
{3,5}
{5,7}
{11,13}
图: 将值插入到 LIST 中。
CREATE PROCEDURE add_set()
DEFINE l_var LIST( SET( INTEGER NOT NULL ) NOT NULL );
SELECT twin_primes INTO l_var FROM numbers
WHERE id = 100;
INSERT AT 2 INTO TABLE (l_var) VALUES( "SET{17,19}" );
UPDATE numbers SET twin_primes = l
WHERE id = 100;
END PROCEDURE;
图: LIST 项。
{3,5}
{17,19}
{5,7}
{11,13}
图: 将 SET 作为参数传到 SPL 例程。
CREATE PROCEDURE add_set( set_var SET(INTEGER NOT NULL),
row_id INTEGER );
DEFINE list_var LIST( SET(INTEGER NOT NULL) NOT NULL );
DEFINE n SMALLINT;
SELECT CARDINALITY(twin_primes) INTO n FROM numbers
WHERE id = row_id;
LET n = n + 1;
SELECT twin_primes INTO list_var FROM numbers
WHERE id = row_id;
INSERT AT n INTO TABLE( list_var ) VALUES( set_var );
UPDATE numbers SET twin_primes = list_var
WHERE id = row_id;
END PROCEDURE;
在 add_set() 中,用户提供 SET 来添加到 LIST,以及标识将 SET 插入其中的那行的 id 的 INTEGER 值。