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

Wywołanie procedury Oracle z parametrem typu kolekcji PL/SQL przez .NET

Wywołanie procedury przez ODP.NET obsługuje tylko tablice asocjacyjne, tj. z INDEX BY ... , Tabele zagnieżdżone nie są obsługiwane.

Jednym z rozwiązań jest konwersja w procedurze 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;

W przypadku instrukcji DML rozważ również to:

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. Jak wdrożyć aplikację .NET korzystającą z ODAC bez instalowania całego składnika u użytkownika?

  2. problem z funkcją to_date z sysdate

  3. Zapytanie o kilka NEXTVAL z sekwencji w jednej instrukcji

  4. Najszybszy sposób na sprawdzenie, czy jakieś rekordy w tabeli bazy danych?

  5. Jak zmienić domyślny schemat w sql developer?