Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Übergeben Sie eine Liste von Ganzzahlen von C# an die gespeicherte Oracle-Prozedur

Oracle ermöglicht es Ihnen, Arrays von Werten als Parameter zu übergeben. In Anlehnung an diese SO-Frage und diese können Sie ein INT_ARRAY definieren Geben Sie Folgendes ein:

create or replace type CHAR_ARRAY as table of INTEGER;

Definieren Sie dann Ihre gespeicherte Prozedur als:

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

Anschließend können Sie die Werteliste übergeben, indem Sie die OracleParameter.CollectionType-Eigenschaft wie folgt festlegen:

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