これは連想配列データ型(「テーブルによるインデックス」とも呼ばれます)ではありません。これはコレクションのデータ型であり、SQLスコープで定義されています。
連想配列はPL/SQLスコープでのみ使用可能であり、次のように定義できます。
CREATE PACKAGE package_name AS
TYPE STRING_MAP IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;
END;
/
C#は、次のようなものを使用して、連想配列をストアドプロシージャに渡すことをサポートしています。
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#はしません 非連想配列の受け渡しをサポートします。
コレクション(非連想配列)をユーザー定義型(UDT)のメンバーとして定義する場合は、連想配列を渡し、PL/SQLを使用して変換するという中間ステップを使用する必要があります。コレクションをUDTに割り当てる前にコレクションに割り当てます。これらすべてをPL/SQLパッケージのストアドプロシージャにラップできます。