Oracle ви позволява да предавате масиви от стойности като параметри. Заемайки от този SO въпрос и този, можете да дефинирате INT_ARRAY
напишете така:
create or replace type CHAR_ARRAY as table of INTEGER;
След това дефинирайте вашата съхранена процедура като:
CREATE OR REPLACE PROCEDURE product_search(
...
myIds IN CHAR_ARRAY,
...)
AS
SELECT ...
...
WHERE SomeIdField IN (Select column_value FROM TABLE(myIds))
...
След това можете да предадете списъка със стойности, като зададете свойството OracleParameter.CollectionType по следния начин:
OracleParameter param = new OracleParameter();
param.OracleDbType = OracleDbType.Int32;
param.CollectionType = OracleCollectionType.PLSQLAssociativeArray;