dovresti usare il costruttore di oggetti su select:
SELECT OBJTYP(A, B, C)
FROM my_table
WHERE Study_Number = p_StudyNum(i)
ma puoi semplificare la procedura a questo invece di tutti quei loop:
begin
select cast(multiset(select /*+ cardinality(s, 10) */ a, b, c
from my_table t, table(p_StudyNum) s
where t.study_number = s.column_value) as OutputTyp)
into p_StdyDtl
from dual;
end;