Oracle cho phép bạn chuyển các mảng giá trị dưới dạng tham số. Mượn từ câu hỏi SO này và câu hỏi này, bạn có thể xác định một INT_ARRAY
gõ như thế này:
create or replace type CHAR_ARRAY as table of INTEGER;
Sau đó, xác định thủ tục được lưu trữ của bạn là:
CREATE OR REPLACE PROCEDURE product_search(
...
myIds IN CHAR_ARRAY,
...)
AS
SELECT ...
...
WHERE SomeIdField IN (Select column_value FROM TABLE(myIds))
...
Sau đó, bạn có thể chuyển danh sách các giá trị bằng cách đặt thuộc tính OracleParameter.CollectionType như sau:
OracleParameter param = new OracleParameter();
param.OracleDbType = OracleDbType.Int32;
param.CollectionType = OracleCollectionType.PLSQLAssociativeArray;