Đó không phải là kiểu dữ liệu mảng kết hợp (còn được gọi là "chỉ mục theo bảng"); nó là một kiểu dữ liệu thu thập và được định nghĩa trong phạm vi SQL.
Mảng liên kết chỉ có sẵn trong phạm vi PL / SQL và có thể được định nghĩa như:
CREATE PACKAGE package_name AS
TYPE STRING_MAP IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;
END;
/
C # hỗ trợ chuyển các mảng liên kết tới các thủ tục được lưu trữ bằng cách sử dụng một cái gì đó như sau:
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 # không KHÔNG hỗ trợ chuyển các mảng không liên kết.
Nếu bạn muốn có một tập hợp (một mảng không liên kết) được xác định là thành viên của kiểu do người dùng xác định (UDT) thì bạn sẽ phải sử dụng bước trung gian là truyền một mảng kết hợp và sau đó sử dụng PL / SQL để chuyển đổi nó. vào một bộ sưu tập trước khi gán nó cho UDT. Bạn có thể gói tất cả điều này trong một thủ tục được lưu trữ trong gói PL / SQL.