处理集合 / 更新整个集合 |
如果您想要更新集合的集合,则必须声明游标来访问外层的集合,然后声明嵌套的游标来访问内层的集合。
图: 更新集合的集合。
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';