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

problema utilizzando i parametri Oracle in SELECT IN

Per passare un insieme di valori, devi utilizzare i tipi di tabella o matrice di Oracle.

Inizialmente, crei un tipo di tabella (ad es. per NUMBER):

CREATE TYPE number_table AS TABLE OF NUMBER; 

Quando crei il parametro per la query, dichiaralo come array PL/SQL associativo:

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

Quindi assegna alcuni valori:

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

E la tua domanda ha bisogno di un cast:

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