Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So übergeben Sie ein Array von Zeichenfolgen von C# an eine gespeicherte Oracle-Prozedur

Dies ist syntaktisch ungültig, da es einen zusätzlichen INDEX hat Schlüsselwort am Ende, aber wenn Sie das beheben:

create type T_STRING_TAB is table of varchar2(260);

Das ist ein Sammlungsdatentyp, der im SQL-Bereich definiert ist. C# unterstützt derzeit nicht die Übergabe eines nicht-assoziativen Arrays.

Ihr C#-Code erwartet ein assoziatives Array, das im PL/SQL-Bereich definiert ist:

Um ein assoziatives PL/SQL-Array zu erstellen, müssen Sie dies innerhalb eines Pakets tun und einen INDEX BY <numeric data type> einfügen Klausel:

CREATE PACKAGE package_name AS
  TYPE STRING_MAP IS TABLE OF VARCHAR2(260) INDEX BY BINARY_INTEGER;
END;
/

Dann kann Ihr Verfahren sein:

create or replace procedure spTest(
  eventids in PACKAGE_NAME.STRING_MAP
)
as
  starteventid integer;
begin
  starteventid := 1000000;
end;
/