Det är inte en associativ array-datatyp (även känd som "index för tabell"); det är en insamlingsdatatyp och definieras i SQL-omfattningen.
Associativa arrayer är endast tillgängliga i PL/SQL-omfattningen och kan definieras som:
CREATE PACKAGE package_name AS
TYPE STRING_MAP IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;
END;
/
C# stöder överföring av associativa arrayer till lagrade procedurer med något sånt här:
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# gör INTE stödja att skicka icke-associativa arrayer.
Om du vill ha en samling (en icke-associativ array) definierad som en medlem av en användardefinierad typ (UDT) måste du använda ett mellansteg för att skicka en associativ array och sedan använda PL/SQL för att konvertera den till en samling innan du tilldelar den till UDT. Du kan slå in allt detta i en lagrad procedur i ett PL/SQL-paket.