sql >> Databasteknik >  >> RDS >> Oracle

Anropar en Oracle-procedur med en PL/SQL-insamlingstypparameter via .NET

Proceduranrop via ODP.NET stöder endast associativa arrayer, d.v.s. med INDEX BY ... , Kapslade tabeller stöds inte.

En lösning är att konvertera in i din Orale-procedur:

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;

Tänk även på detta för DML-satser:

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. Hur sparar jag BLOB som fil i PL/SQL?

  2. Hur man konfigurerar postgresql postgresql.conf listen_addresses för flera ip-adresser

  3. SQL Server - Ta bort alla icke-utskrivbara ASCII-tecken

  4. PL/SQL:Fel PLS-00306:fel nummer eller typer av argument i anrop till utlöst för siffertabell