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

come passare una variabile nella clausola WHERE IN di Oracle sql?

Come alludeva Pavanred, il modo più semplice, anche se non necessariamente il migliore, è interpolare i valori da soli. Non dici qual è la tua lingua di chiamata, ma qualcosa come:

sql = "SELECT something FROM whatever WHERE myColumn in (" + $1 + ")"

Tuttavia, questo significa che è molto importante che tu abbia pre-controllato tutti i valori in $1 per assicurarti che siano numeri, o stringhe correttamente evase, o qualunque altra cosa devi passare ma non possono essere valori grezzi forniti da un utente, per evitare un'iniezione SQL.

L'altra opzione è renderla un processo in due fasi. Innanzitutto, inserisci i valori da $1 in una tabella temporanea, quindi seleziona quei valori come sottoquery:

WHERE myColumn in (SELECT temp_value FROM temp_table)