sql >> Base de Datos >  >> RDS >> Oracle

ORA-21700:el objeto no existe o está marcado para su eliminación para la matriz asociativa como parámetro de entrada llamado desde ODP.NET

después de varios días de buscar en Google, cambié el código de esta manera:

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;

lo único que hice fue usar un v_temp que parece bastante redundante. pero funciona. Hice este cambio porque busqué este artículo aquí... mencionaba:

Tenga en cuenta, sin embargo, que a partir de 12.1, no puede llamar a la función de tabla directamente dentro del operador TABLE. Debe invocarlo en PL/SQL, asignar el resultado a una variable y luego hacer referencia a la variable dentro de TABLE.

aunque la situación es diferente en mi caso (estoy usando 12.2), resolvió mi problema.