To nie jest typ danych tablicy asocjacyjnej (znany również jako „indeks według tabeli”); jest to typ danych kolekcji i jest zdefiniowany w zakresie SQL.
Tablice asocjacyjne są dostępne tylko w zakresie PL/SQL i można je zdefiniować w następujący sposób:
CREATE PACKAGE package_name AS
TYPE STRING_MAP IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;
END;
/
C# obsługuje przekazywanie tablic asocjacyjnych do procedur składowanych przy użyciu czegoś takiego:
OracleParameter parameter = new OracleParameter();
parameter.ParameterName = "YourParameterName";
parameter.OracleDbType = OracleDbType.Varchar2;
parameter.Direction = ParameterDirection.Input;
parameter.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
parameter.Value = new String[5]{"a","b","c","d","e"};
C# NIE obsługuje przekazywanie tablic nieasocjacyjnych.
Jeśli chcesz mieć kolekcję (tablicę nieskojarzeniową) zdefiniowaną jako element typu zdefiniowanego przez użytkownika (UDT), będziesz musiał użyć pośredniego kroku polegającego na przekazaniu tablicy asocjacyjnej, a następnie użyciu PL/SQL do jej konwersji do kolekcji przed przypisaniem jej do UDT. Możesz to wszystko umieścić w procedurze składowanej w pakiecie PL/SQL.