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

problème d'utilisation des paramètres Oracle dans SELECT IN

Pour transmettre un ensemble de valeurs, vous devez utiliser les types de table ou de tableau d'Oracle.

Dans un premier temps, vous créez un type de tableau (par exemple pour NUMBER) :

CREATE TYPE number_table AS TABLE OF NUMBER; 

Lorsque vous créez le paramètre de la requête, déclarez-le en tant que tableau PL/SQL associatif :

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

Attribuez ensuite des valeurs :

param1 = new int[] { 3857, 3858, 3863, 3285 }; 

Et votre requête a besoin d'un casting :

SELECT * FROM tablename a 
where a.flokkurid in (TABLE(CAST(:manyNumbers AS number_table)))
order by sjodategund, rodun