Oracle le permite pasar matrices de valores como parámetros. Tomando prestado de esta pregunta SO y esta, puede definir un INT_ARRAY
escribe así:
create or replace type CHAR_ARRAY as table of INTEGER;
Luego defina su procedimiento almacenado como:
CREATE OR REPLACE PROCEDURE product_search(
...
myIds IN CHAR_ARRAY,
...)
AS
SELECT ...
...
WHERE SomeIdField IN (Select column_value FROM TABLE(myIds))
...
Luego puede pasar la lista de valores configurando la propiedad OracleParameter.CollectionType de esta manera:
OracleParameter param = new OracleParameter();
param.OracleDbType = OracleDbType.Int32;
param.CollectionType = OracleCollectionType.PLSQLAssociativeArray;