Oracle
 sql >> Baza danych >  >> RDS >> Oracle

ORA-21700:obiekt nie istnieje lub jest oznaczony do usunięcia dla tablicy asocjacyjnej jako parametr wejściowy wywoływany z ODP.NET

po kilku dniach googlowania zmieniłem kod w ten sposób:

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;

jedyne, co zrobiłem, to użycie v_temp, który wygląda na dość zbędny. ale to działa. Wprowadziłem tę zmianę, ponieważ przeszukałem ten artykuł tutaj ... zawierał on:

Zauważ jednak, że od 12.1, nie możesz wywołać funkcji table bezpośrednio w operatorze TABLE. Musisz wywołać go w PL/SQL, przypisać wynik do zmiennej, a następnie odwołać się do zmiennej wewnątrz TABLE.

chociaż sytuacja jest inna w moim przypadku (używam 12.2), rozwiązało to mój problem.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle znajduje ograniczenie

  2. Awarie z EMCLI

  3. LISTAGG() Funkcja w Oracle

  4. Podłączanie Oracle do PostgreSQL

  5. Jaki jest najlepszy sposób na połączenie między bazą danych Androida i Oracle?