您可使用“集合子查询”来从子查询的结果创建 MULTISET 集合。此语法是对 SQL 的 ANSI/ISO 标准的扩展。
CREATE ROW TYPE rt1 (a INT); CREATE ROW TYPE rt2 (x int, y rt1); CREATE TABLE tab1 (col1 rt1, col2 rt2); CREATE TABLE tab2 OF TYPE rt1; CREATE TABLE tab3 (a ROW(x INT));
集合子查询 | 结果集合 |
---|---|
MULTISET (SELECT * FROM tab1)... | MULTISET(ROW(col1 rt1, col2 rt2)) |
MULTISET (SELECT col2.y FROM tab1)... | MULTISET(ROW(y rt1)) |
MULTISET (SELECT * FROM tab2)... | MULTISET(ROW(a int)) |
MULTISET(SELECT p FROM tab2 p)... | MULTISET(ROW(p rt1)) |
MULTISET (SELECT * FROM tab3)... | MULTISET(ROW(a ROW(x int))) |
SELECT f(MULTISET(SELECT * FROM tab1 WHERE tab1.x = t.y)) FROM t WHERE t.name = 'john doe';
SELECT f(MULTISET(SELECT id FROM tab1 UNION SELECT id FROM tab2 WHERE tab2.id2 = tab3.id3)) FROM tab3;