处理 SELECT 语句中的集合 / 集合子查询 |
当子查询的投影列表包含单个表达式时, 可以用 ITEM 关键字作为子查询的投影列表的开始以指定 MULTISET 的元素类型与子查询结果的数据类型相匹配。换言之,当包括 ITEM 关键字时,数据库服务器不在投影列表两端放置行包装器。例如:如果子查询(紧跟在 MULTISET 关键字之后)返回 INT 值,集合子查询具有类型 MULTISET(INT NOT NULL)。
图: 查询
EXECUTE FUNCTION int_func(MULTISET(SELECT ITEM int_col FROM tab1 WHERE int_col BETWEEN 1 AND 10));
该查询在子查询中包括 ITEM 关键字,因此将查询返回的 int_col 值转换为类型为 MULTISET(INT NOT NULL)的集合。没有 ITEM 关键字,集合子查询将返回类型为 MULTISET(ROW(a INT) NOT NULL)的集合。