here’s the stored procedure i wrote.In this proc “p_subjectid” is an array of numbers passed from the front end.
PROCEDURE getsubjects(p_subjectid subjectid_tab,p_subjects out refCursor)
as
BEGIN
open p_subjects for select * from empsubject where subject_id in
(select column_value from table(p_subjectid));
--select * from table(cast(p_subjectid as packg.subjectid_tab))
END getsubjects;
This is the error i am getting.
Oracle error ORA-22905: cannot access rows from a non-nested table item OR
as i have seen in different post,i tried casting “cast(p_subjectid as packg.subjectid_tab)” inside table function as given in the comment below.But i am getting another error: ORA-00902: invalid datatype.
And this is the definition of the “subjectid_tab”.
type subjectid_tab is table of number index by binary_integer;
Can anyone please tell me what’s the error.Is anything wrong with the my procedure.
You have to declare the type on “the database level” as ammoQ suggested:
instead of declaring the type within PL/SQL. If you declare the type just in the PL/SQL block, it won’t be available to the SQL “engine”.