我创建了一个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中使用吗?
答案 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中的集合做任何事情。