Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

ORA-21700:o objeto não existe ou está marcado para exclusão para Associative Array como parâmetro de entrada chamado do ODP.NET


depois de vários dias pesquisando, mudei o código desta forma:
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;

a única coisa que fiz foi usar um v_temp que parece bastante redundante. mas funciona. Fiz essa alteração porque pesquisei esse artigo aqui...

Observe, no entanto, que a partir da versão 12.1, você não pode chamar a função table diretamente dentro do operador TABLE. Você deve invocá-lo em PL/SQL, atribuir o resultado a uma variável e, em seguida, fazer referência à variável dentro de TABLE.

embora a situação seja diferente no meu caso (estou usando 12.2), resolveu meu problema.