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

Извикване на процедура на Oracle с параметър за тип колекция PL/SQL чрез .NET

Извикване на процедура чрез ODP.NET поддържа само асоциативни масиви, т.е. с INDEX BY ... , Вложените таблици не се поддържат.

Едно решение е да конвертирате във вашата процедура Orale:

CREATE OR REPLACE PACKAGE test_package_gkeu IS

    TYPE test_type IS TABLE OF NUMBER;    
    TYPE test_type_associative IS TABLE OF NUMBER INDEX BY INTEGER;

PROCEDURE TEST1 (pvTest IN test_type_associative ) IS

v test_type := test_type();
BEGIN
   v.Extend(pvTest.COUNT);
   for i in pvTest.First..pvTest.Last loop
       v(i) := pvTest(i)
   end loop;

select *
into ...
from receiver r
where r.receiverid MEMBER OF (v);

END;

За DML изрази имайте предвид и това:

FORALL i IN INDICES OF pvTest 
    INSERT INTO MY_TABLE (COL_A)
    VALUES (pvTest(i));

or 

FORALL i IN INDICES OF pvTest 
    DELETE FROM receiver 
    WHERE receiverid  = pvTest(i);



  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 PL/SQL разработчик

  2. Как да настроите целевата директория на архивния дневник в базата данни на Oracle

  3. Коригиране на грешка „ORA-01790:изразът трябва да има същия тип данни като съответния израз“

  4. Изграждане на графика на зависимостта на таблицата с рекурсивна заявка

  5. Модулът на Python cx_Oracle модулът не можа да бъде намерен