Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment passer un tableau de chaînes de C # à une procédure stockée Oracle

Ceci est syntaxiquement invalide car il a un INDEX supplémentaire mot-clé à la fin mais si vous corrigez cela :

create type T_STRING_TAB is table of varchar2(260);

Il s'agit d'un type de données de collection défini dans la portée SQL. C# ne prend actuellement pas en charge le passage d'un tableau non associatif.

Votre code C# attend un tableau associatif défini dans la portée PL/SQL :

Pour créer un tableau associatif PL/SQL, vous devez le faire à l'intérieur d'un package et inclure un INDEX BY <numeric data type> phrase :

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

Alors votre procédure peut être :

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