在select语句中使用varray类型

时间:2015-07-29 11:40:33

标签: arrays select plsql oracle10g varray

我试图在select语句中使用varray-type:

CREATE OR REPLACE PROCEDURE ARRAYTEST IS
  type array_t is varray(2) of int;
  array_test array_t := array_t(10,11);
BEGIN
  select * from STATISTIK where abschluss1 in array_test;
END;

但它给了我一个错误:

PLS-00428: an INTO clause is expected in this SELECT statement
PLS-00642: local collection types not allowed in SQL statement

第一个例外似乎是误导性的,我不想在变量中选择一些我想要的变量:

select * from STATISTIK where abschluss1 in (10,12);

但是(10,12)被数组(varray)替换。

是否可以将varray转换为在select-statement中使用?

1 个答案:

答案 0 :(得分:1)

可能但您的类型必须是全局的

create type array_t is varray(2) of int;

然后使用数组作为表(打开p 仅用于编译)

 declare
    array_test array_t := array_t(10,11);
p sys_refcursor;
    begin
open p for
       select * from STATISTIK where abschluss1 in (select column_value from table(array_test ));
    end;