在集合子查询中省略 ITEM 关键字

如果在集合子查询表达式中省略 ITEM 关键字,那么集合子查询就是其元素类型始终为未命名的 ROW 类型的 MULTISET。未命名 ROW 类型的字段与在子查询的 Projection 子句中指定的表达式的数据类型相匹配。

假设您创建了包含类型为 MULTISET 的列的以下表:
CREATE TABLE tab2 
          (
          id_num INT, 
          ms_col MULTISET(ROW(a INT) NOT NULL)
          );
下列查询显示如何在 WHERE 子句中使用集合子查询来将子查询返回的 INT 值的行转换为类型为 MULTISET 的集合。在此示例中,数据库服务器在 tab2ms_col 列等于集合子查询表达式的结果时返回行。

图: 查询

SELECT id_num FROM tab2 
          WHERE ms_col = (MULTISET(SELECT int_col FROM tab1));

该查询在集合子查询中省略了 ITEM 关键字,因此子查询返回的 INT 值类型为 MULTISET(ROW(a INT) NOT NULL)(它与 tab2ms_col 列的数据类型相匹配)。