Our Oracle database was recently updated from 12.1.0.2 to 12.2.0.1 + patch set update 20180417.
Ever since the update we are getting the following error when calling a plsql procedure: ORA-21700: object does not exist or is marked for delete
We have narrowed down the issue and it seems to be caused by using the table operator on an associative array defined within the package. All my research shows that what we are doing was introduced in 12.1 and should still work in 12.2.
Below is a simplified version of a procedure that is failing along with the related type definition. It is being called from c# code using managed data access.
Here is the associative array type definition in the package:
TYPE NUMBER_ARRAY IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
Here is a procedure that fails:
PROCEDURE GetReadingStatus(
STATUSID_ARR IN NUMBER_ARRAY,
P_RETURNS OUT SYS_REFCURSOR
)
BEGIN
OPEN P_RETURNS FOR
SELECT * FROM READINGSTATUS rs
WHERE rs.statusID IN (select * from table(STATUSID_ARR));
END;
It runs if the select * from table(STATUSID_ARR)
portion is removed.
Is there an issue with using the table operator on associative arrays in 12.2? Could the issue be stemming from something else?