三合一网站方案,e网站建设,免费网页空间2023,微信商城网站建设如果您想要更新集合的集合#xff0c;则必须声明游标来访问外层的集合#xff0c;然后声明嵌套的游标来 访问内层的集合。
例如#xff0c;假设 manager 表有一附加的列 scores#xff0c;它包含一其元素类型为整数的 MULTISET 的 LIST#xff0c;如下图所示。
更新集合…如果您想要更新集合的集合则必须声明游标来访问外层的集合然后声明嵌套的游标来 访问内层的集合。
例如假设 manager 表有一附加的列 scores它包含一其元素类型为整数的 MULTISET 的 LIST如下图所示。
更新集合的集合。 scores LIST(MULTISET(INT NOT NULL) NOT NULL); 要更新 MULTISET 中的值请声明在 LIST 中每一值间移动的游标以及在 MULTISET 中 每一值间移动的嵌套的游标如下图所示。
更新 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;
该 SPL 函数将 scores 列中的每一 MULTISET 选择至 l 内然后将 MULTISET 中的每一 值选择至 m 内。如果 m 中的值为 0则函数从 MULTISET 删除它。在删除 0 的值之后 该函数统计每一 MULTISET 中剩余的元素数并返回一整数。 提示 由于此函数为 LIST 中每一 MULTISET 返回一值因此当您执行该函数时您 必须使用游标来括起 EXECUTE FUNCTION 语句。