Toto je syntakticky neplatné, protože obsahuje navíc INDEX
klíčové slovo na konci, ale pokud to opravíte:
create type T_STRING_TAB is table of varchar2(260);
To je datový typ kolekce definovaný v rozsahu SQL. C# aktuálně nepodporuje předávání neasociativního pole.
Váš kód C# očekává asociativní pole definované v rozsahu PL/SQL:
Chcete-li vytvořit asociativní pole PL/SQL, musíte to udělat uvnitř balíčku a zahrnout INDEX BY <numeric data type>
klauzule:
CREATE PACKAGE package_name AS
TYPE STRING_MAP IS TABLE OF VARCHAR2(260) INDEX BY BINARY_INTEGER;
END;
/
Pak váš postup může být:
create or replace procedure spTest(
eventids in PACKAGE_NAME.STRING_MAP
)
as
starteventid integer;
begin
starteventid := 1000000;
end;
/