Oracle
 sql >> Base de données >  >> RDS >> Oracle

ORA-21700 :l'objet n'existe pas ou est marqué pour suppression pour le tableau associatif en tant que paramètre d'entrée appelé depuis ODP.NET

après plusieurs jours de recherche sur Google, j'ai changé le code de cette façon :

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;

la seule chose que j'ai faite est d'utiliser un v_temp qui semble assez redondant. mais ça marche. J'ai fait ce changement parce que j'ai cherché cet article ici... il mentionnait :

Notez cependant qu'à partir de la version 12.1, vous ne pouvez pas appeler la fonction de table directement à l'intérieur de l'opérateur TABLE. Vous devez l'invoquer en PL/SQL, affecter le résultat à une variable, puis référencer la variable dans TABLE.

bien que la situation soit différente dans mon cas (j'utilise 12.2), cela a résolu mon problème.