| 处理集合 / 更新整个集合 | |
如果您想要更新集合的集合,则必须声明游标来访问外层的集合,然后声明嵌套的游标来访问内层的集合。
图: 更新集合的集合。
scores LIST(MULTISET(INT NOT NULL) NOT NULL);
图: 更新 MULTISET 中的值。
CREATE FUNCTION check_scores ( mgr VARCHAR(30) )
SPECIFIC NAME nested;
RETURNING INT;
DEFINE l LIST( MULTISET( INT NOT NULL ) NOT NULL );
DEFINE m MULTISET( INT NOT NULL );
DEFINE n INT;
DEFINE c INT;
SELECT scores INTO l FROM manager
WHERE mgr_name = mgr;
FOREACH list_cursor FOR
SELECT * FROM TABLE(l) INTO m;
FOREACH set_cursor FOR
SELECT * FROM TABLE(m) INTO n;
IF (n == 0) THEN
DELETE FROM TABLE(m)
WHERE CURRENT OF set_cursor;
ENDIF;
END FOREACH;
LET c = CARDINALITY(m);
RETURN c WITH RESUME;
END FOREACH
END FUNCTION
WITH LISTING IN '/tmp/nested.out';