CREATE_PROCEDURE test6() DEFINE a SMALLINT; DEFINE b SET(SMALLINT NOT NULL); SELECT set_col INTO b FROM table1 WHERE id = 6; -- Select the set in one row from the table -- into a collection variable FOREACH cursor1 FOR SELECT * INTO a FROM TABLE(b); -- Select each element one at a time from -- the collection derived table b into a IF a = 4 THEN DELETE FROM TABLE(b) WHERE CURRENT OF cursor1; -- Delete the element if it has the value 4 EXIT FOREACH; END IF; END FOREACH; UPDATE table1 SET set_col = b WHERE id = 6; -- Update the base table with the new collection END PROCEDURE;
此 SPL 例程声明了两个 SET 变量,a 和 b,每一个都具有一组 SMALLINT 值。第一个 SELECT 语句把 table1 一行中的 SET 列复制到变量 b。然后例程声明了一个名为 cursor1 的游标,它一次把一个元素从 b复制到 SET 变量 a。当游标位于值为 4 的元素时,DELETE 语句就从 SET 变量 b 中删除这个元素。最后,UPDATE 语句把表 table1 的这一行用存储在变量 b 中的新集合替代。
有关如何在 SPL 例程中使用集合变量的信息,请参阅 GBase 8s SQL 教程指南。