Oracle
 sql >> Database >  >> RDS >> Oracle

Passa un elenco di numeri interi da C# nella stored procedure Oracle

Oracle consente di passare array di valori come parametri. Prendendo in prestito da questa domanda SO e da questa puoi definire un INT_ARRAY digita in questo modo:

create or replace type CHAR_ARRAY as table of INTEGER;

Quindi definisci la tua procedura memorizzata come:

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

È quindi possibile passare l'elenco di valori impostando la proprietà OracleParameter.CollectionType in questo modo:

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