sql >> Databasteknik >  >> RDS >> Oracle

Hur man skickar en array av strängar från C# till en Oracle-lagrad procedur

Detta är syntaktisk ogiltigt eftersom det har en extra INDEX sökord i slutet men om du fixar det:

create type T_STRING_TAB is table of varchar2(260);

Det är en insamlingsdatatyp som definieras i SQL-omfattningen. C# stöder för närvarande inte att skicka en icke-associativ array.

Din C#-kod förväntar sig en associativ array definierad i PL/SQL-omfånget:

För att göra en PL/SQL-associativ array måste du göra det inuti ett paket och inkludera en INDEX BY klausul:

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

Då kan din procedur vara:

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



  1. Databasproblem när man tillåter flera beständiga inloggningar i webbläsaren

  2. Använd Javascript-fusionsdiagram för att exportera kod till PHP, MySql-kod

  3. Exkluderar endast ett MIN-värde på Oracle SQL

  4. Hur hämtar jag alla rekursiva underordnade underordnade raden i Oracle SQL?