Oracle
 sql >> Database >  >> RDS >> Oracle

Come passare una matrice di stringhe da C# a una stored procedure Oracle

Questo non è sintatticamente valido in quanto ha un INDEX extra parola chiave alla fine, ma se lo risolvi:

create type T_STRING_TAB is table of varchar2(260);

Questo è un tipo di dati di raccolta definito nell'ambito SQL. C# attualmente non supporta il passaggio di una matrice non associativa.

Il codice C# prevede un array associativo definito nell'ambito PL/SQL:

Per creare un array associativo PL/SQL è necessario farlo all'interno di un pacchetto e includere un INDEX BY <numeric data type> clausola:

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

Allora la tua procedura può essere:

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