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 教程指南。