我试图在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中使用?
答案 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;