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

Sådan overføres en række strenge fra C# til en Oracle-lagret procedure

Dette er syntaktisk ugyldigt, da det har en ekstra INDEX søgeord i slutningen, men hvis du løser det:

create type T_STRING_TAB is table of varchar2(260);

Det er en indsamlingsdatatype defineret i SQL-omfanget. C# understøtter i øjeblikket ikke videregivelse af et ikke-associativt array.

Din C#-kode forventer et associativt array defineret i PL/SQL-omfanget:

For at lave et PL/SQL associativt array skal du gøre det inde i en pakke og inkludere en INDEX BY <numeric data type> klausul:

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

Så kan din procedure være:

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



  1. Tilknytning af boolesk egenskab til Oracle ved hjælp af Entity Framework

  2. Mysql VIEWS vs. PHP-forespørgsel

  3. Oracle:Kombiner to tabeller med forskellige kolonner

  4. MySQL:Er det muligt at 'fylde' en SELECT med værdier uden en tabel?