Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ORA-21700:Objekt existiert nicht oder ist zum Löschen für Associative Array als Eingabeparameter markiert, der von ODP.NET aufgerufen wird

nach mehreren Tagen des Googelns habe ich den Code folgendermaßen geändert:

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;

Das einzige, was ich getan habe, ist, ein v_temp zu verwenden, das ziemlich überflüssig aussieht. Aber es funktioniert. Ich habe diese Änderung vorgenommen, weil ich diesen Artikel hier gesucht habe ... er erwähnte:

Beachten Sie jedoch, dass Sie ab 12.1 die Tabellenfunktion nicht direkt innerhalb des TABLE-Operators aufrufen können. Sie müssen es in PL/SQL aufrufen, das Ergebnis einer Variablen zuweisen und dann auf die Variable innerhalb von TABLE verweisen.

Obwohl die Situation in meinem Fall anders ist (ich verwende 12.2), hat es mein Problem gelöst.