Oracle
 sql >> база данни >  >> RDS >> Oracle

ORA-21700:обектът не съществува или е маркиран за изтриване за асоциативен масив като входен параметър, извикан от ODP.NET

след няколко дни в гугъл, промених кода по следния начин:

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;

единственото нещо, което направих, е да използвам v_temp, който изглежда доста излишен. но работи. Направих тази промяна, защото потърсих тази статия тук... в нея се споменава:

Имайте предвид обаче, че от 12.1 не можете да извикате функцията на таблицата директно в оператора TABLE. Трябва да го извикате в PL/SQL, да присвоите резултат на променлива и след това да препратите променливата в TABLE.

въпреки че ситуацията е различна в моя случай (използвам 12.2), това реши проблема ми.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. REGEXP_REPLACE() Функция в Oracle

  2. как да конвертирате низ от дата във формат на дата в oracle10g

  3. Oracle:'=ANY()' срещу 'IN ()'

  4. Oracle sql:клауза за подреждане по и различна

  5. Създайте критерии за хибернация, за да се присъедините към една и съща таблица два пъти - опитах 2 подхода с 2 грешка в разликата