如何从查询结果中选择数组?

时间:2013-05-01 06:19:48

标签: arrays oracle subquery aggregate varray

我创建了一个VARRAY类型:

CREATE TYPE my_array AS varray(1024) OF VARCHAR2(512);

我知道我可以使用my_array从值列表中创建my_array()的实例:

SELECT my_array('foo', 'bar');

但是有没有办法从查询结果中创建实例?我在想这样的事情:

SELECT my_array(SELECT table_name FROM all_tables WHERE owner = 'SCOTT')
  FROM dual;

或者,如果失败,则返回my_array

的聚合
SELECT my_array_agg(table_name) FROM all_tables WHERE owner = 'SCOTT';

这可以在Oracle中使用吗?

1 个答案:

答案 0 :(得分:2)

在plsql中批量收集

declare 
arr my_array;
begin 
SELECT table_name bulk collect into arr FROM all_tables WHERE owner = 'SCOTT';
end;

select collect(table_name) from all_tables where owner = 'SCOTT';

但你无法对sqlplus中的集合做任何事情。