Вам нужно создать тип ..
create or replace type NUMBER_ARRAY as table of number;
CREATE OR REPLACE PROCEDURE stored_p
(
ntype IN NUMBER_ARRAY ,
p_ResultSet OUT TYPES.cursorType
)
Вы можете зациклить его, используя ..
for i in 1 .. ntype.count
loop
dbms_output.put_line( ntype(i) );
end loop;
Чтобы проверить это,
DECLARE
ntypetest NUMBER_ARRAY := NUMBER_ARRAY ();
BEGIN
FOR i IN 1 .. 5
LOOP
ntypetest.EXTEND;
ntypetest (i) := i;
END LOOP;
stored_p(ntypetest,..)
Тамможет быть некоторое изменение в синтаксисе.
Конечно, вы также можете передавать значения через запятую, но они будут представлены в виде строки.Ваша строка должна быть что-то вроде 'val1','val2','val3'
.Вы должны быть осторожны, когда у вас есть числа, так как вся строка будет выглядеть как in ('2343,3444,2222')
, что будет рассматриваться как одно значение, а не как несколько чисел как in (2343,3444,2222)