Oracle
 sql >> Database >  >> RDS >> Oracle

ORA-21700:l'oggetto non esiste o è contrassegnato per l'eliminazione per Associative Array come parametro di input chiamato da ODP.NET

dopo diversi giorni di ricerca su Google, ho modificato il codice in questo modo:

CREATE OR REPLACE PACKAGE Support_Data_Types AS
            TYPE ttDate            IS TABLE OF DATE
END Support_Data_Types;
PROCEDURE GetData
(
    tabDates IN SUPPORT_DATA_TYPES.TTDATE,
)
AS
    v_temp SUPPORT_DATA_TYPES.TTDATE:= tabDates;  -- assigned the parameter to a temporary variable
BEGIN
    SELECT count(*) INTO n FROM table(v_temp);
END GetData;

l'unica cosa che ho fatto è usare un v_temp che sembra abbastanza ridondante. ma funziona. Ho apportato questa modifica perché ho cercato questo articolo qui ... ha menzionato:

Si noti, tuttavia, che a partire dalla versione 12.1, non è possibile chiamare la funzione tabella direttamente all'interno dell'operatore TABLE. Devi richiamarlo in PL/SQL, assegnare il risultato a una variabile e quindi fare riferimento alla variabile all'interno di TABLE.

sebbene la situazione sia diversa nel mio caso (sto usando 12.2), ha risolto il mio problema.