插入至集合内 / 插入至嵌套的集合内 |
将 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 值。