sql >> Databáze >  >> RDS >> Oracle

ORA-21700:objekt neexistuje nebo je označen k odstranění pro Asociativní pole jako vstupní parametr volaný z ODP.NET

po několika dnech googlování jsem kód změnil takto:

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;

jediná věc, kterou jsem udělal, je použít v_temp, který vypadá docela nadbytečně. ale funguje to. Tuto změnu jsem provedl, protože jsem prohledal tento článek zde ... bylo v něm uvedeno:

Všimněte si však, že od 12.1 nemůžete volat funkci tabulky přímo uvnitř operátoru TABLE. Musíte jej vyvolat v PL/SQL, přiřadit výsledek k proměnné a pak odkazovat na proměnnou v TABLE.

i když je situace v mém případě jiná (používám 12.2), vyřešilo to můj problém.




  1. Moje oblíbená rozšíření PostgreSQL - část druhá

  2. SQL Query pro zřetězení hodnot sloupců z více řádků v Oracle

  3. Index PostgreSQL vs Index InnoDB - Pochopení rozdílů

  4. Jak nastavit replikaci MySQL v RHEL, Rocky a AlmaLinux