Oracle
 sql >> Base de données >  >> RDS >> Oracle

Passer une liste d'entiers de C # dans la procédure stockée Oracle

Oracle vous permet de passer des tableaux de valeurs en tant que paramètres. En empruntant à cette question SO et à celle-ci, vous pouvez définir un INT_ARRAY tapez comme ceci :

create or replace type CHAR_ARRAY as table of INTEGER;

Définissez ensuite votre procédure stockée comme :

CREATE OR REPLACE PROCEDURE product_search(
        ...
        myIds IN CHAR_ARRAY,
        ...)
AS  
    SELECT ...
    ...
    WHERE SomeIdField IN (Select column_value FROM TABLE(myIds))
    ...

Vous pouvez ensuite transmettre la liste de valeurs en définissant la propriété OracleParameter.CollectionType comme ceci :

OracleParameter param = new OracleParameter();
param.OracleDbType = OracleDbType.Int32;
param.CollectionType = OracleCollectionType.PLSQLAssociativeArray;