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;